使用MySQL复合索引加速慢查询
让我们首先了解什么是复合索引:
复合索引是作用于多个列的索引。
它也称为多列索引。
MySQL允许用户创建最多包含16列的复合索引。
查询优化器将复合索引用于测试索引中所有列的查询。
它也可用于测试第一列、前两列等情况的查询。
如果在索引定义中以正确的顺序指定列,则可以使用单个复合索引来加速对同一表上的某些类型查询。
让我们看看如何在创建表时创建复合索引。可以使用以下语句:
查询
CREATE TABLE table_name ( c1 data_type PRIMARY KEY, c2 data_type, c3 data_type, c4 data_type, INDEX index_name (c2,c3,c4) );
在上述语句中,复合索引包含三列c2、c3和c4。
也可以使用“CREATE INDEX”语句将复合索引添加到现有表中。让我们看看如何操作:
查询
CREATE INDEX index_name ON table_name(c2,c3,c4);
让我们看看如何使用复合索引加速慢查询:
查询执行速度取决于其持续时间。
使用索引提示可以提高查询速度。
MySQL优化器可用于在选择索引时做出正确的决策。
但这只应在静态查询上进行。
如果添加了“WHERE”子句发生变化的查询,则查询的性能会下降,因为它不会让优化器发挥作用。
“FORCE INDEX”语句的作用类似于“USE INDEX (index_list)”,此外,表扫描被认为是一项代价高昂的任务。
只有在无法使用命名索引查找表中的行时,才需要表扫描。
广告