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