使用 MySQL 中的复合索引使慢查询变快

mysqlmysqli database

让我们首先看看什么是复合索引 −

  • 复合索引是用于多个列的索引。

  • 它也称为多列索引。

  • 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);

让我们看看如何使用复合索引 − 加快 sloq 查询速度。

  • 查询执行的速度取决于其持续时间。

  • 使用索引提示将提高查询速度。

  • 在选择索引时,可以使用 MySQL 优化器做出正确的决策。

  • 但这应该只在静态查询上执行。

  • 如果在 ‘WHERE’ 子句更改的地方添加查询,查询的性能将会下降,因为它不会让优化器完成其工作。

  • ‘FORCE INDEX’语句的作用类似于‘USE INDEX (index_list),此外,表扫描被视为一项昂贵的任务。

  • 仅当无法使用命名索引来查找表中的行时,才需要进行表扫描。


相关文章