多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
使用文件排序对小数据集是很快的,但是如果一个查询匹配的结果有上百万行的话会怎样? 例如如果where子句只有sex列,如何排序? 对于那些选择性非常低的列,可以增加一些特殊的索引来做排序.例如:可以创建(sex,rating)索引用于下面的查询 ![](https://box.kancloud.cn/e057acc0328e764575921f15c4221533_754x331.png) 优化这类索引的另一个比较好的策略是使用延迟关联,通过使用覆盖索引查询返回需要的主键,再根据这些主键关联原表获得需要的行.这可以减少mysql扫描哪些需要丢弃的行数. 下面这个查询显示了如何高效的使用(sex,rating)索引进行分页 ~~~ 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>); ~~~