在阅读“高性能 MySQL 第 2 版”的“优化排序”部分时,我发现很难理解以下内容:
mysql> SELECT FROM profiles WHERE sex='M' ORDER BY rating LIMIT 100000, 10;
无论如何索引此类查询都可能是一个严重的问题,因为高偏移量要求他们花费大部分时间扫描大量数据,然后将其丢弃。
...
优化此类查询的另一个好策略是使用覆盖索引来仅检索您最终将检索的行的主键列。...这是一个需要索引(性别,评级)才能有效工作的示例:mysql>SELECT (cols) FROM profiles INNER JOIN (
-> SELECT (primary key cols) FROM profiles
-> WHERE x.sex='M' ORDER BY rating LIMIT 100000, 10
->) AS x USING(primary key cols);
我的问题是,如果第一个查询不能利用(性别等级)索引来查找行 100000-100010,那么第二个查询会怎么做?