我目前的目标是创建动态选择和查询。在我们的例子中,我们有一个参考表。引用表包含引用列值和表名。我们使用这些引用在其他表上创建一个动态查询。例如:什么是大规模动态选择和查询的最佳实践
select * from {table} where {pk1} in (...) and {pk2} in {...}
生成的查询存在问题。问题是某些行在结果中返回,但它们不在查询中,因为在查询中有不同的条件。
更改SQL生成喜欢这个
select * from {table} where ({pk1}=(value1) and {pk2}=(value2)) or ({pk1}=(value3) and {pk2}=(value4)) ...)
在这种情况下,问题解决了,但查询执行时间是不好的,而不是“IN”的查询。它慢了大约10-20倍。查询字符串太大而不是“IN”查询。
我们不能使用表值查询,因为我们无法动态地为每个表创建一个新的TYPE,并且这些列的类型和顺序不同。未来可能会插入新的表格类型。
那么,最好的做法是什么?
问候
有多少值在“in”子句中?例如{pk1}在(1,2,3,......,10000) –
这取决于引用的表。当前在一个表中大约有50k行 –