使用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)”,此外,表扫描被认为是一项代价高昂的任务。

  • 只有在无法使用命名索引查找表中的行时,才需要表扫描。

更新于:2021年3月9日

501 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告