Sql索引与全表扫描

时间:2011-01-26 22:29:00

标签: sql sql-execution-plan

在编写复杂的SQL查询时,我们如何确保使用正确的索引并避免全表扫描?我这样做是为了确保我只加入具有索引的列(主键,唯一键等)。这够了吗?

4 个答案:

答案 0 :(得分:4)

向数据库询问查询的执行计划,然后从那里继续。

不要忘记索引where子句中出现的列。

答案 1 :(得分:2)

很难说什么是最好的索引,因为根据情况有不同的策略。你现在还应该对索引有什么好的东西。

  1. 索引有时会增加select语句的性能,并且总是会降低插入和更新的性能。
  2. 要索引表,不必将其作为某个字段的键。而且,现实生活指数几乎总是包括几个领域。
  3. 如果您的表现令人满意,请不要为“未来目的”创建任何索引。即使你根本没有索引。
  4. 调整索引时始终尝试分析执行计划。不要害怕尝试。

      +
  5. 表扫描并不总是坏事。
  6. 这就是我的全部。

答案 2 :(得分:1)

查看查询的执行计划,以查看查询优化器如何认为必须检索的内容。该计划通常基于表格的统计数据,指数的选择性和联接的顺序。请注意,优化程序可以决定执行全表扫描比索引查找“更便宜”。

其他要寻找的事情:

  • 如果可能,请避免使用子查询。

  • 尽量减少使用'OR' - 谓词
    在where子句中

答案 3 :(得分:1)

使用Database Tuning Advisor(SQL Server)分析您的查询。它将建议添加必要的索引以调整您的查询性能