2011-01-26 114 views
2

在编写复杂的SQL查询时,如何确保我们使用正确的索引并避免全表扫描?我通过确保只加入具有索引的列(主键,唯一键等)来完成此操作。这够了吗?Sql索引与全表扫描

回答

1

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

其他的东西去寻找:

  • 避免子查询,如果可能的。

  • 减少where子句

+0

你能澄清你的第二点吗? OR的问题究竟是什么? – SQB 2014-06-25 09:09:46

4

向数据库询问您的查询的执行计划,然后从此处继续。

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

2

在使用“OR'谓词
这是很难说什么是最好的索引,因为有不同的策略,取决于形势。尽管如此,你仍然应该对索引进行coupe的工作。

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

      +
  5. 表扫描并不总是坏事。

这全是来自我。

1

使用数据库优化顾问(SQL Server)来分析您的查询。它会建议必要的索引来增加你的查询性能