• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mysql索引对排序的影响实例分析

    本文实例讲述了mysql索引对排序的影响。分享给大家供大家参考,具体如下:

    索引不仅能提高查询速度,还可以添加排序速度,如果order by 后面的语句用到了索引,那么将会提高排序的速度。

    测试

    1、创建测试表:t15表

    CREATE TABLE `t15` (
     `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
     `cat_id` int(10) unsigned NOT NULL DEFAULT '0',
     `price` decimal(10,2) NOT NULL DEFAULT '0.00',
     `name` char(5) NOT NULL DEFAULT '',
     PRIMARY KEY (`id`),
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    
    

    2、插入1W行数据

    ?php
    $db = 'test';
    $conn = mysql_connect('localhost','root','1234');
    mysql_query('use ' . $db , $conn);
    mysql_query('set names utf8' , $conn);
    for($i=1;$i=10000;$i++) {
      $cat_id = rand(1,10);
      $price = rand(1,50000);
      $name = substr(str_shuffle('abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ234565789'),0,5);
      $sql = sprintf("insert into t15 values (%d,%d,%f,'%s')",$i,$cat_id,$price,$name);
      mysql_query($sql , $conn);
    }
    
    

    3、商场网站,一般都会按照某个分类进行价格上的排序,我们来模拟一下,执行同一条sql语句。

    select name,cat_id,price from t15 where cat_id=1 order by price;
    
    

    (1)首先不添加索引

    从查询分析可以看到Extra中使用到了Using filesort,表示需要进行文件排序。

    (2)给(cat_id,price)列添加索引

    alter table t15 add index cp(cat_id,price);
    
    

    这里的查询分析中Extra没用了Using filesort,表示添加上索引再进行查询的sql没有使用到外部排序,而是使用到了索引的排序,因为索引本身就是会排序的,所以不需要额外的order by一次。

    4、观测查询时间

    Query_ID为1的是没有添加索引执行的语句,Query_ID为3的是添加索引后执行的语句,一个执行时间为0.013秒,一个执行时间为0.005秒,肯定是加上索引的快,我们来看看具体快在哪里

    Query_ID为1的sql语句执行详细耗时图:

    Query_ID为3的sql语句执行详细耗时图:

    很明显,Query_ID1中的Sorting result耗时0.012秒,而Query_ID2中的Sorting result只耗时0.000004秒,而这个Sorting result就是排序耗时。

    结论:索引对排序的速度是有一定的影响的,所以,在实际的开发中,要结合实际情况制定索引,并尽可能将排序字段添加至索引中。

    更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL索引操作技巧汇总》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

    希望本文所述对大家MySQL数据库计有所帮助。

    您可能感兴趣的文章:
    • mysql索引使用率监控技巧(值得收藏!)
    • 当Mysql行锁遇到复合主键与多列索引详解
    • MySQL索引不会被用到的情况汇总
    • MySQL查询条件中in会用到索引吗
    • MySQL如何修改账号的IP限制条件详解
    • MySQL分区表的局限和限制详解
    • mysql查询语句通过limit来限制查询的行数
    • MySQL连接数超过限制的解决方法
    • MySQL索引长度限制原理解析
    上一篇:MySQL DISTINCT 的基本实现原理详解
    下一篇:mysql索引覆盖实例分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mysql索引对排序的影响实例分析 mysql,索引,对,排序,的,影响,