作者回复: 非常准确!
作者回复: 对的,为了避免文件排序的发生。因为查询时我们只能用到status索引,如果要对create_time进行排序,则需要使用文件排序filesort。
filesort是通过相应的排序算法将取得的数据在内存中进行排序,如果内存不够则会使用磁盘文件作为辅助。虽然在一些场景中,filesort并不是特别消耗性能,但是我们可以避免filesort就尽量避免。
作者回复: 可以这么理解
作者回复: 建立联合索引没错,还有就是避免文件排序的问题。
作者回复: 这里我们就默认orderno是递增的,而且是随着id自增长递增
作者回复: 只要有序的,就不会再重复排序了,只是一个升降序的问题了
作者回复: 使用limit 10000,1,所以需要顺序扫描到10001行,所以我们尽量使用主键递增的方式,直接将主查询换成select * from `demo`.`order` where id> 10000 limit 20,避免扫描带来的性能问题。
作者回复: >=即可,强调优化思路,具体的细节老师这边没有把控好,多多包涵
作者回复: 这里解释的有问题,已修正,是一个匹配行。
作者回复: 我与丁奇结论没有相反,丁奇是建议你在这些count类型中选择使用count(*),而我是建议不要在大表中做count(*)。丁奇老师讲解了COUNT(*)的原理,我相信他也会建议你不要在一个大表中频繁COUNT(*)。
作者回复: 答案已给出
作者回复: 这个id是自增长id
作者回复: 为了避免文件排序的发生。因为查询时我们只能用到status索引,如果要对create_time进行排序,则需要使用文件排序filesort。
作者回复: 下一讲则会讲到
作者回复: 这个涉及到返回记录的大小,前者会返回10020条行记录,而后者只返回20条记录。
作者回复: 对的
作者回复: 这里主要是filesort问题
作者回复: 不会,没有使用到索引。