我有一个巨大的数据库,只有那个选择语句。并且有不同的应用程序使用它。在15列中,有12列正在这些应用中使用。是否建议在索引中使用所有这12列?如果不是,问题是什么?
请注意,插入或更新仅每周一次或两次。并且想法是删除所有这些索引并在表加载后重新创建。
感谢您的帮助。
答案 0 :(得分:2)
这取决于这些列的用途:
索引列使用更多磁盘空间,内存并降低INSERT和UPDATE速度,因为SQL引擎必须更新索引。
索引可以在检索数据时提高速度,并且在WHERE,JOIN,GROUP BY或ORDER BY中使用索引字段。
如果表格很大,那么12个索引列可能会占用大量磁盘空间和内存,从而有效地减慢了对数据的检索速度。最好的办法是使用性能调优器来确定哪些索引可以获得最大收益。
然而,这实际上取决于您的应用程序。虽然将如此大比例的列编入索引是不常见的,但它可能适用于您的情况。
答案 1 :(得分:2)
但在此之前,请使用较小但数量相当大的数据进行测试。从WHERE,JOIN,GROUP BY和ORDER BY中的其他列开始,这些列比其他列更常见,并查看您找到的改进。如果需要,保持逐渐增加。我猜想某些索引是过度的,但只有测试才能证明它。
最后,如果您想索引所有内容并且空间是一个问题,您始终可以使用Apache Solr查看数据库外部。一旦掌握了它,你就可以索引everything甚至为用户提供冷静的分面搜索。而且你只需要每周重建一次或两次Solr索引。
希望有所帮助。