【发布时间】:2017-07-10 00:55:02
【问题描述】:
我追求的场景是:
Result = Nothing
CollectionOfTables = Tbl1, Tbl2, Tbl3
While(True){
CurrentTable = GetHighestPriorityTable(CollectionOfTables)
If(CurrentTable) = Nothing Then Break Loop;
RemoveCurrentTableFrom(CollectionOfTables)
ForEach ID in CurrentTable as TempRow {
If(Result.DoesntContainsId(ID)) Then Result.AddRow(TempRow)
}
}
假设我有以下三个表。
IdNameTable1,优先级 1
1 John kbd>
2 玛丽
3 艾尔莎
Id名称Table2,优先级2
2 Steve
3 最大
4 彼得
Id名称Table3,优先级3
4 Frank
5 哈利
6 莫娜
这是我需要的最终结果。
Id姓名结果
1 John
2 玛丽
3 艾尔莎
4 彼得
5 哈利
6 莫娜
需要牢记的一些提示。
实际表数为 10。
每个表的行数超过 100 万。
不必在查询中使用联接,但由于我处理查询的数据量很大,因此必须优化并在 SQL 中使用集合操作,而不是游标脚本。
【问题讨论】:
-
到目前为止,您提出了什么(次优)解决方案?
-
@ChrisFlynn 其实我不懂 SQL 所以没什么!
标签: sql sql-server join optimization set-operations