我目前的目標是創建動態選擇和查詢。在我們的例子中,我們有一個參考表。引用表包含引用列值和表名。我們使用這些引用在其他表上創建一個動態查詢。例如:什麼是大規模動態選擇和查詢的最佳實踐
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行 –