小编Ray*_*Hsu的帖子

MySQL 中 where 子句中多列索引的列顺序是否重要?

我有下表:

CREATE TABLE `student` ( 
     `name` varchar(30) NOT NULL DEFAULT '',
     `city` varchar(30) NOT NULL DEFAULT '', 
     `age`  int(11) NOT NULL DEFAULT '0',
     PRIMARY KEY (`name`,`city`) 
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

我想知道,如果我执行以下两条SQL,它们的性能是否相同?

mysql> select * from student where name='John' and city='NewYork';
mysql> select * from student where city='NewYork' and name='John';
Run Code Online (Sandbox Code Playgroud)

涉及问题:

  1. 如果有一个多列索引(name, city),那两条SQL都用了吗?
  2. 优化器是否因为索引而将第二个 sql 更改为第一个?

我对他们两个执行解释,结果如下:

mysql> explain select * from student where name='John' and city='NewYork';
+----+-------------+---------+-------+---------------+---------+---------+-------------+------+-------+

| id | select_type | table   | type  | possible_keys | key     | …
Run Code Online (Sandbox Code Playgroud)

mysql sql indexing query-performance

5
推荐指数
2
解决办法
2916
查看次数

标签 统计

indexing ×1

mysql ×1

query-performance ×1

sql ×1