zoukankan      html  css  js  c++  java
  • 排序分组优化

    1.说明

      在使用order by时,经常会出现Using fileSort

      在使用group by时,使用不当,会出现Using temporay

    二:排序

    1..Using fileSort

      说明会对数据使用一个外部的索引排序

      而不是内部的索引顺序进行

      mysql无法利用索引完成排序操作称为文件排序

      

    1.索引使用情况

    explain
    select * from employee where name = '鲁班' and dep_id = 1 order by  age;
    

      效果:

      

    explain
    select name,dep_id,age from employee order by  name,dep_id,age;
    

      

    explain
    select * from employee order by  name,dep_id,age;
    

      

    explain
    select name,dep_id,age from employee order by  name,age;
    

      

    explain
    select * from employee where name = '鲁班' order by  dep_id,age;
    

      

    explain
    select name,dep_id,age from employee where name = '鲁班' order by  dep_id,age;
    

      

    explain
    select name,dep_id,age from employee where name = '鲁班' and dep_id > 1 order by age;
    

      

    explain
    select name,dep_id,age from employee where name = '鲁班'  order by age,dep_id;
    

      

    explain
    select name,dep_id,age from employee where name = '鲁班'  order by dep_id asc, age desc;
    

      

      结论:

      使用覆盖索引,同时order by符合索引顺序。也不能一升一降。

    三:分组

    1.说明

      分组前必排序

    2.

    explain
    select name from employee group by dep_id,age ;
    

      

    explain
    select age from employee where name = '鲁班' group by dep_id,age ;
    

      

    explain
    select age from employee where dep_id = 1 group by name,age ;
    

      

    explain
    select age from employee where name = '鲁班' group by age , dep_id;
    

      

    四:分页

    1.主要有两种方式

      使用子查询优化

      使用id限定优化

    2.使用子查询优化

      select *from employ e inner join (select id from emply limit 100000,10)et on e.id =et.id

      select * from employ where id >=(select * from employ limit 10000,1) limit 10

    五:最大值优化

    1.sql

    explain 
    select max(name) from employee;
    

      

      说明:

      因为走索引了,内部就会走优化器,速度很快

    六:count的注意点

    1.说明

      count(*):统计所有的字段,包含了null  

      count(字段):统计所有,不包含null

        如:select count(name or name is null) from employee;

  • 相关阅读:
    有几个点会导致插件包不出现
    JScrollPane恢复正常滚动量
    java jlabel 对齐_java将JLabel中的文本右对齐
    SVN的安装和使用手册
    idea生成类注释和方法注释的正确方法
    关于RCP中英文的一些总结
    精通Hibernate类与类关联关系:[一]建立多对一的单向关联关系
    Hibernate笔记=>继承关系的映射[转 王继彬]
    Unity(六):使用场景Ⅲ:用于依赖注入(上)
    NHibernate之旅(13):初探立即加载机制[转 Blog 李永京]
  • 原文地址:https://www.cnblogs.com/juncaoit/p/13376171.html
Copyright © 2011-2022 走看看