Sql Server中复合索引和覆盖索引之间有什么区别?复合和覆盖索引
Q
复合和覆盖索引
0
A
回答
2
覆盖索引是一个复合索引,它包含您正在用select语句检索并且参与where子句的每一列。这是提高查询性能的最佳方法之一。
0
覆盖索引是覆盖(因此名称)所有履行查询或连接条件所必需的列的复合索引。
这里没有什么特别的关于SQL服务器,这些都是通用名称。
0
当索引包含您的搜索条件以及您的查询尝试检索的所有数据时,复合索引也是覆盖索引。在这个例子中:
SELECT a,b,c FROM Foo WHERE a = 'FooFoo'
覆盖索引将包含列(搜索谓语)以及列b和c。
在这种情况下,SQL Server经过优化以返回在索引中找到的那些值,并且不需要在实际表中进行额外查找。如果b和c频繁返回但很少搜索到,则索引可能会设置为使b和c包含在索引中但未编入索引。
在SQL Server 2005 DBA之前,会在其索引中添加额外的'覆盖'列以实现此优化。在SQL Server 2005中添加了一个附加功能,允许您在索引的树叶节点中包含不属于索引树的列。创建索引时,您可以在include子句中指定其他“覆盖”列。这些列不会编入索引,而是添加到保存SQL Server的索引的叶节点,以查找主表中的其他数据。将数据添加到include子句可以节省SQL Server在获取覆盖索引带来的优化的同时将额外数据添加到搜索树的开销。
相关问题
- 1. 覆盖索引是否重复数据?
- 2. 复合非聚集索引与覆盖索引之间的区别是什么
- 3. 问题与覆盖和z-索引
- 4. activeadmin覆盖索引操作
- 5. 覆盖索引操作
- 6. SSRS 2005年覆盖索引
- 7. 覆盖索引列activeadmin
- 8. 覆盖索引与ORDER BY
- 9. oracle复合索引列位置和非复合索引
- 10. MySQL的前缀索引和覆盖指数(全索引)
- 11. 的MongoDB:地理空间索引和覆盖索引查询
- 12. 什么是SQL Server中的覆盖索引和涵盖查询?
- 13. Nosetests和组合覆盖
- 14. cancan和inherited_resources覆盖集合
- 15. 覆盖和恢复功能
- 16. mysql恢复和覆盖
- 17. 在泰坦图中创建复合索引和混合索引
- 18. 为聚合框架创建覆盖索引
- 19. 将元素合计到某个索引并覆盖该值
- 20. 基于索引合并2个数组而不覆盖php
- 21. 覆盖以前的文件的组合索引
- 22. MongoDB复合索引
- 23. 避免在SQLite3中使用覆盖索引重复数据
- 24. SQL索引更新与覆盖柱
- 25. MKMapView覆盖在固定索引
- 26. WordPress的 - 覆盖CSS索引类?
- 27. EF代码优先:CreateIndex - 覆盖索引
- 28. EF/CD如何覆盖索引属性?
- 29. 使用覆盖索引的说明
- 30. mongodb的索引覆盖查询
索引不被ANSI标准覆盖 - 供应商没有以不同方式命名功能是很幸运的。 – 2010-04-07 20:31:05
@OMG小马:我怀疑这些名字是由计算机科学家创造的,而不是由数据库供应商提供的。 – Tomalak 2010-04-07 20:36:56