何时使用复合索引
复合索引,表示为索引(column_A、column_B、column_C),可增强利用复合索引的数据库性能指定列用于连接、过滤甚至选择数据等目的。重要的是,复合索引也有利于利用索引列最左侧子集的查询。因此,像上面所示的索引对于涉及以下内容的查询将是有利的:
复合索引的性能注意事项
由于以下原因,使用复合索引可能会显着影响性能因素:
使用复合索引的好处
复合索引具有以下几个优点:
示例用例
考虑提供的 home 表示例:
要确定 geolat 和 geolng 的复合索引是否合适,请检查最常执行的查询:
SELECT * FROM homes WHERE geolat BETWEEN ??? AND ??? AND geolng BETWEEN ??? AND ???
对于此查询,(geolat, geolng) 上的复合索引将是最佳选择,因为它直接与指定的过滤条件对齐。
EXPLAIN 的解释输出
分析 EXPLAIN输出:
EXPLAIN SELECT ... WHERE homes.geolat BETWEEN -100 AND 100 AND homes.geolng BETWEEN -100 AND 100
输出表明 geolat 和 geolng 上的现有索引足以满足指定的查询。但是,如果查询主要涉及同时对 geolat 和 geolng 进行过滤,则按照建议创建复合索引 (index(geolat_geolng)) 可以进一步提高性能。
以上是我什么时候应该在数据库中使用复合索引?的详细内容。更多信息请关注PHP中文网其他相关文章!