我的问题是关于在表上聚集索引的限制。根据理论,在单个表中,我们只能有一个集群索引。但是如果我在表格中有日期时间的列,说“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