在排序操作中如果能使用到索引來排序,那麼可以極大的提高排序的速度,要使用索引來排序需要滿足以下兩點即可。
1、order by子句後的列順序要與組合索引的列順序一致,且所有排序列的排序方向(正序/倒序)需一致;
2、所查詢的字段值需要包含在索引列中,及滿足覆蓋索引。
通過例子來具體分析
在user_test表上建立乙個組合索引alter table user_test add index index_user(user_name , city , age);
可以使用到索引排序的案例select user_name, city, age from user_test order by user_name;
select user_name, city, age from user_test order by user_name, city;
select user_name, city, age from user_test order by user_name desc, city desc;
select user_name, city, age from user_test where user_name = 'feinik' order by city;
注:第4條sql語句比較特殊一點,如果where查詢條件為索引列的第一列,且為常量條件,那麼也可以使用到索引。
無法使用索引排序的案例
***不在索引列中select user_name, city, age from user_test order by user_name, ***;
排序列的方向不一致select user_name, city, age from user_test order by user_name asc, city desc;
所要查詢的字段列***沒有包含在索引列中select user_name, city, age, *** from user_test order by user_name;
where查詢條件後的user_name為範圍查詢,所以無法使用到索引的其他列select user_name, city, age from user_test where user_name like 'feinik%' order by city;
MySQL 復合索引該怎麼用
本文均已學習為主,不考慮實際業務。若在實際業務中,還需考慮增刪改的代價和實際需要。資料量大,查詢業務多的 where從句 group by從句 order by從句 on從句 中的字段,可以考慮建索引。alter table t add index abc a,b,c 這裡有乙個原則 離散度大的列放...
mysql索引怎麼學 mysql學習 索引
在平時開發過程中寫sql時,我們通常都不太關心sql的效能,只有能給查出來資料,sql的執行速度不是太慢就不會去管它了。但是開發時期的資料量往往都不是太大,很多效能問題只有在生產環境中才會發現,如 資料過多 sql關聯了太多的表,使用了太多的join 或者建立了索引,但是索引失效的問題。所以要解決這...
mysql怎麼安裝索引 MySQL 索引詳解
6.索引的長度 在為char和varchar型別的資料列定義索引時,可以把索引的長度限制為乙個給定的字元個數 這個數字必須小於這個欄位所允許的最大字元個數 這麼做的好處是可以生成乙個尺寸比較小 檢索速度卻比較快的索引檔案。在絕大多數應用裡,資料庫中的字串資料大都以各種各樣的名字為主,把索引的長度設定...