2011-11-29 51 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