影响索引的mysql函数_mysql索引对排序的影响实例分析
本文實(shí)例講述了mysql索引對(duì)排序的影響。分享給大家供大家參考,具體如下:
索引不僅能提高查詢速度,還可以添加排序速度,如果order by 后面的語(yǔ)句用到了索引,那么將會(huì)提高排序的速度。
測(cè)試
1、創(chuàng)建測(cè)試表: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行數(shù)據(jù)
$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、商場(chǎng)網(wǎng)站,一般都會(huì)按照某個(gè)分類(lèi)進(jìn)行價(jià)格上的排序,我們來(lái)模擬一下,執(zhí)行同一條sql語(yǔ)句。
select name,cat_id,price from t15 where cat_id=1 order by price;
(1)首先不添加索引
從查詢分析可以看到Extra中使用到了Using filesort,表示需要進(jìn)行文件排序。
(2)給(cat_id,price)列添加索引
alter table t15 add index cp(cat_id,price);
這里的查詢分析中Extra沒(méi)用了Using filesort,表示添加上索引再進(jìn)行查詢的sql沒(méi)有使用到外部排序,而是使用到了索引的排序,因?yàn)樗饕旧砭褪菚?huì)排序的,所以不需要額外的order by一次。
4、觀測(cè)查詢時(shí)間
Query_ID為1的是沒(méi)有添加索引執(zhí)行的語(yǔ)句,Query_ID為3的是添加索引后執(zhí)行的語(yǔ)句,一個(gè)執(zhí)行時(shí)間為0.013秒,一個(gè)執(zhí)行時(shí)間為0.005秒,肯定是加上索引的快,我們來(lái)看看具體快在哪里
Query_ID為1的sql語(yǔ)句執(zhí)行詳細(xì)耗時(shí)圖:
Query_ID為3的sql語(yǔ)句執(zhí)行詳細(xì)耗時(shí)圖:
很明顯,Query_ID1中的Sorting result耗時(shí)0.012秒,而Query_ID2中的Sorting result只耗時(shí)0.000004秒,而這個(gè)Sorting result就是排序耗時(shí)。
結(jié)論:索引對(duì)排序的速度是有一定的影響的,所以,在實(shí)際的開(kāi)發(fā)中,要結(jié)合實(shí)際情況制定索引,并盡可能將排序字段添加至索引中。
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《MySQL索引操作技巧匯總》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》及《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》
希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。
您可能感興趣的文章:mysql建立高效的索引實(shí)例分析
mysql重復(fù)索引與冗余索引實(shí)例分析
mysql索引覆蓋實(shí)例分析
MySQL中NULL對(duì)索引的影響深入講解
詳解MySQL索引原理以及優(yōu)化
通過(guò)唯一索引S鎖與X鎖來(lái)了解MySQL死鎖套路
mysql 添加索引 mysql 如何創(chuàng)建索引
MySQL索引類(lèi)型總結(jié)和使用技巧以及注意事項(xiàng)
MySQL查看、創(chuàng)建和刪除索引的方法
MySQL 創(chuàng)建索引(Create Index)的方法和語(yǔ)法結(jié)構(gòu)及例子
mysql聚簇索引的頁(yè)分裂原理實(shí)例分析
總結(jié)
以上是生活随笔為你收集整理的影响索引的mysql函数_mysql索引对排序的影响实例分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 吉姆尼的时间怎么调?
- 下一篇: 电动传祺小车仪表盘的胎压检测表怎么只显示