本文实例讲述了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
<?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);}
select name,cat_id,price from t15 where cat_id=1 order by price;

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

这里写图片描述

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

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

这里写图片描述

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数据库计有所帮助。

更多相关文章

  1. MySQL 什么时候使用INNER JOIN 或 LEFT JOIN
  2. 《Android和PHP最佳实践》官方站
  3. android用户界面之按钮(Button)教程实例汇
  4. TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
  5. Android(安卓)UI开发第十七篇——Android(安卓)Fragment实例(Lis
  6. Android——Activity四种启动模式
  7. [android源码下载索引贴】微信+二维码那都不是事......
  8. Android布局(序章)
  9. Android发送短信方法实例详解

随机推荐

  1. 将主DB复制到不同的从站
  2. 在CodeIgniter中包含视图的最佳方法。
  3. 如果我们通过引用传递,是不是创建了变量?
  4. 如果机器安装了oracle (oci8和/或pdo_oci
  5. 自动重定向到XML返回的URL?
  6. 在Symfony2中使用Doctrine DQL时检索的记
  7. 阅读使用JavaScript生成的页面
  8. 入门: 如何在xampp中运行php文件 (WINDOW
  9. 只有变量可以通过引用- array_walk传递。
  10. PHP mysqli_fetch_assoc不返回正确的值。