explain select id from ad_visit_201811 where turn=1 order by id asc limit 5000000,1000
这个sql语句扫描了 5001000 行,turn 上没有索引,优化后的 SQL 语句:
explain select a.id,a.gid from (select id from ad_visit_201811 order by id asc limit 5000000,1000) b, ad_visit_201811 a where a.id=b.id
再到业务代码根据 turn 做筛选。
对于数据量很大的表,应该先做一个子查询查出 id (只会在索引中扫描),然后再做关联查询,这样扫描的行数是限定的,不会扫描表前面的所有行,大大提高查询效率。
本文为Larwas原创文章,转载无需和我联系,但请注明来自larwas博客 https://larwas.com
最新评论