1
我想從DB2數據庫的表中獲取以下數據。db2中「in」條件查詢的性能
select col1, col2, col3 from employee where employee_id in (1,2,3)
請分享您對查詢性能的看法?任何替代品?
我想從DB2數據庫的表中獲取以下數據。db2中「in」條件查詢的性能
select col1, col2, col3 from employee where employee_id in (1,2,3)
請分享您對查詢性能的看法?任何替代品?
DB2的IN謂詞優化傳統上傾向於估計結果集的基數是錯誤的。有了IN謂詞,它有時可能會優化以獲得比常識更多的結果。
此外,它的工作原理與上述Martin Smith完全一樣 - 按順序運行3個單獨的索引查詢。這是可修復由要麼使優化
db2set DB2_INLIST_TO_NLJN=true
這迫使DB2創建一個臨時的虛擬表,並通過切換到不同類型的查詢執行嵌套循環連接(在很多情況下,一個很好的執行選項)或如遠程版本。您也可以輕推DB2使用嵌套循環連接的版本一樣
select col1, col2, col3
from employee, (values 1,2,3) as v(ids)
where employee_id=v.ids
請記住,這是所有有些大專院校的,除非你的目標表在你的查詢項目和行的顯著量,並且必須運行大量這樣的查詢。
你有什麼指標在桌子上?我從來沒有使用db2,但一個明顯的選擇是範圍尋找'where employee_id> = 1和employee_id <= 3' –
如果在employee_id上有適當的索引,絕對沒有問題 – MarianP
只要值的部分在'in '子句不是不相關的子查詢。在這種情況下,iSeries上的DB2有一些性能影響(範圍選擇或實際的'join'往往會更好) –