products 表有一个 actor 索引,title 无索引
SELECT * FROM products WHERE actor='SEAN CARREY'
AND title like '%APOLLO%';
上面的查询在MySQL中是
1.把表中所有行的所有数据都从存储引擎取到服务器再比较actor和title
还是
2.只把所有行的所有actor和title从存储引擎取到服务器比较,再从存储引擎取出符合条件的行的所有数据
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
(看来题目中的例子和各种术语来自《高性能 MYSQL》第三版第 5 章第 3 节 172 页,跟我之前从字面上理解的差别很大,重新回答一下)
有一个重要的前提题目中没有提及,这里补上:
products表有一个actor索引,title无索引。所以,以 InnoDB 为例,MYSQL 的读取顺序是:
actor索引)。actor='SEAN CARREY'的聚簇索引,并得到一堆主键。title条件并返回满足条件的数据。