我的問題是關於在表上聚集索引的限制。根據理論,在單個表中,我們只能有一個集羣索引。但是如果我在表格中有日期時間的列,說「From date」和「To date」?這些列通常需要在WHERE子句中填充我的應用程序中的報表。如果我還需要在同一個表中的主鍵上創建一個集羣索引,那麼仍然如何在其他列上獲得集羣索引的優勢?在這種情況下,我的查詢仍然會在較大的記錄中運行得更慢多個集羣索引效應
多個集羣索引效應
回答
實際上,您也可以在表上只有一個聚簇索引 - 因爲表的數據是由該聚簇索引物理排序的。
如果您在WHERE子句中頻繁需要兩個日期時間列,最好的選擇是在這兩列上有一個非聚集索引,並且可能包含您經常用這些查詢檢索的其他列,以便使它一個covering index。
就查詢性能而言,在包含非聚簇索引和聚簇索引的情況下,確實沒有太大區別。
但是,你不想膨脹你的聚集索引,因爲這些列也將被添加到同一個表上的所有非聚集索引 - 保持它很小,最好是一個INT,不斷增加,穩定(不改變),你應該很好。
如果您需要爲同一個表的多個索引執行集羣索引表,那麼我看到的唯一路由是爲每個集羣索引保留一個表副本。
聚集索引影響表中數據的物理存儲,所以根據定義,只能有一個。您可以擴大聚簇索引以包含其他列,但這可能有其自身的缺點。
聚集索引的性能優勢在於記錄以反映索引的方式進行存儲(這就是爲什麼隨機插入和更新聚集索引會非常快速地分段表),因此基於此查詢性能索引可以像從存儲設備讀取一樣好,但不能在其他索引上獲得。
另一個選項是索引(或物化)視圖:您可以在表上創建多個視圖,每個視圖具有不同的聚簇索引。這在報告場景中可能很有用,但索引視圖有很多限制,並且會影響修改表數據的查詢的性能。聯機叢書提供了創建和測試所需的全部信息。我懷疑你真正的需求確實是要實現一個報告解決方案,如果是這樣,那麼最好做到這一點:創建一個單獨的數據庫,其中包含一個針對報告優化的模式(Google「星型模式」)和加載數據定期從主數據庫導入報告中。但這是一個全新的研究領域,我不會急於進入。
意見也是一個不錯的選擇。感謝名單! – 2010-08-30 09:00:11
我建議你選擇你從中獲得最大收益的索引,並將其作爲聚集索引。使剩餘的索引不聚集。您可能想要運行一些測試,以瞭解將不同索引集羣化與非集羣化所帶來的好處。
分享和享受。
- 1. 集羣索引
- 2. 實體框架多對多羣集與非羣集索引
- 3. 多租戶羣集索引設計
- 4. 多列上的非集羣索引VS單個索引中的多列
- 5. 集羣索引SQL Server
- 6. 集羣索引,mysql和Rails
- 7. splunk搜索頭集羣加入索引器集羣
- 8. 彈性搜索 - 從集羣導出索引到不同集羣
- 9. 通過羣集或非聚集索引
- 10. 集羣索引列上的非集羣索引可提高性能?
- 11. 涵蓋索引與集羣索引(數據庫索引)
- 12. SQL索引問題:爲什麼SQL Server更喜歡這個非集羣索引到一個集羣?
- 13. R有效索引匹配元素,集羣評估
- 14. PostgreSQL中的羣集和非羣集索引
- 15. SQL Server - 何時使用羣集與非羣集索引?
- 16. 是Oracle中的索引集羣還是非集羣?
- 17. SQL Server:將羣集主索引更改爲非羣集
- 18. JBOSS Standalone HornetQ多播羣集在羣集中引發循環
- 19. 哪個搜索索引應與php和postgresql集羣一起使用
- 20. UniqueIdentifier上的NewSequentialId集羣索引
- 21. 表壓縮和羣集索引compresison
- 22. 集羣或唯一索引MySql DB?
- 23. AWS JAVA ElasticsearchClient集羣和索引查找
- 24. 發票項目表集羣索引表
- 25. SQL Server非集羣索引 - 包含值
- 26. 停止羣集索引腳本
- 27. SQL Server - 分區表與集羣索引?
- 28. 在infinispan lucene索引中清除集羣
- 29. 跨Elasticsearch羣集更改索引模板
- 30. 非集羣外鍵索引推薦
想一想吧..謝謝了! – 2010-08-31 04:05:37