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