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

2022-09-25 05:45:12 字數 1380 閱讀 7291

索引不僅能提高查詢速度,還可以新增排序速度,如果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++)

3、商場**,一般都會按照某個分類進行**上的排序,我們來模擬一下,執行同一條sql語句。

select n程式設計客棧ame,cat_id,price from t15 where cat_id=1 order by price;

(1)首先不新增索引

從查詢分析可以看到extra中使用到了using filesort,表alsxy示需要進行檔案排序。

(2)給(cat_id,price)列新增索引

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

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

4、觀測查詢時間

query_id為1的是沒有新增索引執行的語句,query_id為3的是新增索引後執行的語句,乙個執行時間為0.013秒,乙個執行時間為0.005秒,肯定是加上索引的快,我們來看看具體快在**

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

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

很明顯,query_id1中的sorting result耗時0.012秒,而query_id2中的sorting result只耗時0.000004秒,而alsxy這個sorting result就是排序耗時。

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

mysql 索引長度對索引的影響

1 查詢頻繁 2 區分度高 3 長度小 4 盡量能覆蓋常用查詢欄位.1 索引長度直接影響索引檔案的大小,影響增刪改的速度,並間接影響查詢速度 占用記憶體多 針對列中的值,從左往右擷取部分,來建索引 1 截的越短,重複度越高,區分度越小,索引效果越不好 2 截的越長,重複度越低,區分度越高,索引效果越...

MySQL唯一索引和普通索引對效能的影響

先說結論 對查詢 普通索引和唯一索引對查詢效能影響很小 對更新 唯一索引比普通索引更耗時.查詢流程 唯一索引找到第乙個匹配資料後不繼續往後查詢.1.普通索引,從索引樹根節點開始按層往下查詢,找到對應的資料頁,然後二分法查詢節點,找到第乙個匹配的資料後,繼續往後查詢,直到不滿足條件.然後返回.2.唯一...

索引對查詢效率的影響

我們將利用advanturewords2008r2中的sales.salesorderdetail表,其中有12萬條資料,非常適合用於測試。不過我們不直接在這張表上做測試,因為這張表上已經有索引了。我們需要新建一張表,將該表中的資料匯入我們新建的test和test2表。test和test2的建立方法...