我面臨不得不寫一些查詢,這將涉及一些相當大的表(幾百萬記錄)的表掃描。 (我知道這是一個可怕的想法,我正在推動一種不會涉及到這個問題的替代方法,但現在這是我堅持的目標。並且在相關領域創建索引可能不會是)表掃描匹配其中一個字段 - 或多個語句
對於某些表,有多個字段可能與目標值匹配。 我會想,但我只想確認一下,使用OR的單個查詢會比多個查詢更快。那就是:
SELECT keyinfo FROM TABLE1 WHERE field1 = target OR field2 = target OR field3 = target;
會優於
SELECT whatever FROM TABLE1 WHERE field1 = target;
SELECT whatever FROM TABLE1 WHERE field2 = target;
SELECT whatever FROM TABLE1 WHERE field3 = target;
直覺這似乎是正確的,因爲它只需掃描表一次。但它不得不測試多個領域,所以不知道你失去了多少收益。快速測試證明了這一點,但我不確定在背景中是否有任何臨時索引正在影響結果。
更多信息: 我認爲在大多數情況下不會找到任何匹配,但是我確實需要所有匹配(如果有的話),所以我不能僅限於獲取第一個1行。 另外,它是z/OS DB2。
鑑於我可能需要運行此多個目標 s,我可能最終將拉出所有相關領域到一個臨時表,因爲我應該能夠建立一個索引總體而言,這應該快得多。但我現在對錶格掃描問題感到好奇。