2011-11-29 53 views
1

什麼是更高效?搜索查詢(oracle)中的多個where子句:效率

  1. 在單個sql語句中多個where子句(無連接),NO INDICES在任何列上?
  2. 多個where子句中的單個sql 語句(無連接),INDICES在所有可能具有 子句的列上?
  3. 動態SQL與構建,因爲你需要where子句。

回答

1

這是非常辛苦沒有看到查詢和執行計劃說......但本能地,我會說,#2通常可能會是最有效的。索引將使Oracle更容易在表中查找數據。當然,過度索引也會導致性能問題。

我不確定動態查詢和索引有什麼關係。如果你的表有一個索引,一個查詢(動態與否)將能夠使用索引。

+0

我正在編寫代碼以從前端執行一些搜索(包括簡單和複雜)。傳統建議我使用動態查詢...但缺乏編譯和少量調試迫使我去探索其他選項。 – Sash

+0

我很好奇這是什麼傳統,這是建議你使用動態查詢...對我來說,動態查詢是最後的手段,當我不能做任何其他方式。你真的在運行時構建查詢嗎? – FrustratedWithFormsDesigner

+0

這是一種情況:我想從一個或多個表中搜索一羣用戶。除非需要,否則我不想放置太多的搜索條件...即使我的搜索字段已設置好。如果他們是空的,沒有點搜索他們。 – Sash