真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql索引順序怎么調(diào) mysql如何設(shè)置索引

Mysql —— 索引的使用順序

創(chuàng)建表

創(chuàng)新互聯(lián)公司專注于舒城企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站制作。舒城網(wǎng)站建設(shè)公司,為舒城等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

該表的記錄如下:

添加兩個(gè)索引:

通過 explain 來查看:

會(huì)命中兩條索引,但實(shí)際只用了 idx_v1,即使實(shí)際查詢用聯(lián)合索引更好,也依然只用了 idx_v1。

之前的測(cè)試,發(fā)現(xiàn)用的是第一個(gè),我們刪除索引,把之前的索引語(yǔ)句順序換一下:

發(fā)現(xiàn)用的是第一個(gè)。

Mysql建索引的注意事項(xiàng)

1.最左前綴匹配原則,非常重要的原則,mysql會(huì)一直向右匹配直到遇到范圍查詢(、、between、like)就停止匹配,比如a = 1 and b = 2 and c 3 and d = 4 如果建立(a,b,c,d)順序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引則都可以用到,a,b,d的順序可以任意調(diào)整。

2.=和in可以亂序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意順序,mysql的查詢優(yōu)化器會(huì)幫你優(yōu)化成索引可以識(shí)別的形式。

3.盡量選擇區(qū)分度高的列作為索引,區(qū)分度的公式是count(distinct col)/count(*),表示字段不重復(fù)的比例,比例越大我們掃描的記錄數(shù)越少,唯一鍵的區(qū)分度是1,而一些狀態(tài)、性別字段可能在大數(shù)據(jù)面前區(qū)分度就是0,那可能有人會(huì)問,這個(gè)比例有什么經(jīng)驗(yàn)值嗎?使用場(chǎng)景不同,這個(gè)值也很難確定,一般需要join的字段我們都要求是0.1以上,即平均1條掃描10條記錄。

4.索引列不能參與計(jì)算,保持列“干凈”,比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很簡(jiǎn)單,b+樹中存的都是數(shù)據(jù)表中的字段值,但進(jìn)行檢索時(shí),需要把所有元素都應(yīng)用函數(shù)才能比較,顯然成本太大。所以語(yǔ)句應(yīng)該寫成create_time = unix_timestamp(’2014-05-29’)。

5.盡量的擴(kuò)展索引,不要新建索引。比如表中已經(jīng)有a的索引,現(xiàn)在要加(a,b)的索引,那么只需要修改原來的索引即可。

1."一個(gè)頂三個(gè)"。建了一個(gè)(a,b,c)的復(fù)合索引,那么實(shí)際等于建了(a),(a,b),(a,b,c)三個(gè)索引,因?yàn)槊慷嘁粋€(gè)索引,都會(huì)增加寫操作的開銷和磁盤空間的開銷。對(duì)于大量數(shù)據(jù)的表,這可是不小的開銷!

2.覆蓋索引。同樣的有復(fù)合索引(a,b,c),如果有如下的sql: select a,b,c from table where a=1 and b = 1。那么MySQL可以直接通過遍歷索引取得數(shù)據(jù),而無需回表,這減少了很多的隨機(jī)io操作。減少io操作,特別的隨機(jī)io其實(shí)是dba主要的優(yōu)化策略。所以,在真正的實(shí)際應(yīng)用中,覆蓋索引是主要的提升性能的優(yōu)化手段之一

3.索引列越多,通過索引篩選出的數(shù)據(jù)越少。有1000W條數(shù)據(jù)的表,有如下sql:select * from table where a = 1 and b =2 and c = 3,假設(shè)假設(shè)每個(gè)條件可以篩選出10%的數(shù)據(jù),如果只有單值索引,那么通過該索引能篩選出1000W*10%=100w 條數(shù)據(jù),然后再回表從100w條數(shù)據(jù)中找到符合b=2 and c= 3的數(shù)據(jù),然后再排序,再分頁(yè);如果是復(fù)合索引,通過索引篩選出1000w *10% *10% *10%=1w,然后再排序、分頁(yè),哪個(gè)更高效,一眼便知

mysql索引問題

1.首選數(shù)據(jù)庫(kù)都會(huì)有自動(dòng)優(yōu)化查詢計(jì)劃的能力,在語(yǔ)句一中,明顯對(duì)seq進(jìn)行了排序,而is_need_udate用in進(jìn)行范圍查詢,使用index2,開銷就會(huì)小很多,但是語(yǔ)句二中is_need_update沒有這個(gè)了,所以才會(huì)使用index1.

2.所以建立的原則

2.1根據(jù)對(duì)應(yīng)表查詢頻率最高的屬性建立索引

2.2為經(jīng)常需要排序,分組的字段建立索引

2.3盡量使用數(shù)據(jù)量少的索引

建議詳細(xì)的使用方法看看書吧,數(shù)據(jù)庫(kù)的優(yōu)化是一門大學(xué)問,值得好好研究的


文章題目:mysql索引順序怎么調(diào) mysql如何設(shè)置索引
網(wǎng)站路徑:http://weahome.cn/article/doghgsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部