中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql索引對排序的影響實例分析

發布時間:2020-09-19 11:31:58 來源:腳本之家 閱讀:171 作者:webbc 欄目: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,表示需要進行文件排序。

mysql索引對排序的影響實例分析

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

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

這里的查詢分析中Extra沒用了Using filesort,表示添加上索引再進行查詢的sql沒有使用到外部排序,而是使用到了索引的排序,因為索引本身就是會排序的,所以不需要額外的order by一次。

mysql索引對排序的影響實例分析

4、觀測查詢時間

mysql索引對排序的影響實例分析

Query_ID為1的是沒有添加索引執行的語句,Query_ID為3的是添加索引后執行的語句,一個執行時間為0.013秒,一個執行時間為0.005秒,肯定是加上索引的快,我們來看看具體快在哪里

Query_ID為1的sql語句執行詳細耗時圖:

mysql索引對排序的影響實例分析

Query_ID為3的sql語句執行詳細耗時圖:

mysql索引對排序的影響實例分析

很明顯,Query_ID1中的Sorting result耗時0.012秒,而Query_ID2中的Sorting result只耗時0.000004秒,而這個Sorting result就是排序耗時。

結論:索引對排序的速度是有一定的影響的,所以,在實際的開發中,要結合實際情況制定索引,并盡可能將排序字段添加至索引中。

更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL索引操作技巧匯總》、《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數據庫鎖相關技巧匯總》

希望本文所述對大家MySQL數據庫計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临猗县| 于田县| 永川市| 临泉县| 沁阳市| 义马市| 石渠县| 库尔勒市| 乌恰县| 永寿县| 咸阳市| 全州县| 老河口市| 黄山市| 佛冈县| 青冈县| 仁布县| 辉南县| 泸定县| 南涧| 奉化市| 潞西市| 乐山市| 桐柏县| 南京市| 屯门区| 湟中县| 自治县| 互助| 登封市| 海门市| 南通市| 波密县| 沈阳市| 江油市| 鄂伦春自治旗| 昭苏县| 正镶白旗| 射洪县| 宜君县| 辽宁省|