美文网首页
Mysql查询语句优化技巧

Mysql查询语句优化技巧

作者: Liuzz25 | 来源:发表于2019-05-23 10:27 被阅读0次

    PS:根据自己平时写代码实际测试得出的一些小技巧,不敢保证对所有语句都有效,自己觉得还不错,哈哈哈,后续发现其他的技巧也会继续补充的。如果有不对的地方欢迎大家指出来,一起讨论学习。

    一、查询条件优化

    1.能筛选的数据约多的条件放越前面。

    如考虑下面的查询:

    select * from student where school_id=12 and  student_id=1001
    

    如果这个表非常大,那么改写成下面这样速度回更快:

    select * from student where student_id=1001 and  school_id=12
    
    2. 查询速度越快的条件放越前面。

    如考虑下面的查询:

    select * from student where student_name like '%刘%' and school_id=12 and sex=0
    

    如果这个表非常大,那么改写成下面这样速度回更快:

    select * from student where school_id=12 and sex=0 and student_name like '%刘%'
    

    二、Limit查询优化

    1.优化LIMIT查询使用延迟关联查询

    让mysql扫描尽可能少的页面,获取需要访问的记录后再根据关联列回原表查询需要的所有列。如考虑下面的查询:

    select * from student where student_name like '%刘%' and sex=0 order by age desc limit 1000,10
    

    如果这个表非常大,那么改写成下面这样速度会更快:

    select * from student
    INNER JOIN (
            SELECT id FROM student 
            WHERE student_name like '%刘%' and sex=0 
            order by age desc 
            limit 1000,10
        ) AS lim USING (id)
    
    2.如果某字段有索引,可预先计算边界值,再进行查询。

    如考虑下面的查询:

    select * from student where student_name like '%刘%' and sex=0 order by age desc limit 1000,10
    

    如果id有索引,同时知道id的边界值到该在1000-2000范围,那么改写成下面这样速度会更快:

    select * from student 
    where student_name like '%刘%' and sex=0 and id between 1000 and 2000
    order by age desc limit 1000,10
    

    相关文章

      网友评论

          本文标题:Mysql查询语句优化技巧

          本文链接:https://www.haomeiwen.com/subject/iszmzqtx.html