91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何看待MYSQL 索引

發布時間:2021-10-25 10:43:08 來源:億速云 閱讀:137 作者:柒染 欄目:大數據

這篇文章給大家介紹如何看待MYSQL 索引,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

我們先看一個表

如何看待MYSQL 索引

select * from employees where first_name = 'Kyoichi' and last_name = 'Maliniak';

按照一般思路,根據數據量我們決定是不是要建立索引,而建立索引針對這樣的情況,到底那種索引更好。

我們來做一個實驗,建立為這個一個查詢我們建立三個索引

分別是 first_name    last_name   first_name_lat_name

如何看待MYSQL 索引

可以看到的是查詢執行器選擇了 first_name_last_name 這樣的聯合索引

為什么,我們帶著問題繼續

我這邊將這個聯合索引刪除

如何看待MYSQL 索引

我們可以看到結果是什么,結果是走的一種叫 intersect 方式的索引,

我們還繼續帶著問題看(不要著急,你的問題會在最下面來進行總結和揭曉)

我們刪除IX_LAST_NAME 這個索引,然后在繼續進行查詢

如何看待MYSQL 索引

OK ,到此,我覺得可以小結一下了,

問題1 ,那種索引更好

問題2,intersect   索引好還是聯合索引方式好

問題3,你為什么刪除了 LAST_NAME 而不刪除 FIRST_NAME

帶著這三個問題,我們繼續開始旅程

在提那種索引更好的情況下,其實我們應該知道這些索引到底給查詢帶來了什么效應。

下面的數字體現了查詢的cost 值

 0.00081800 | select * from employees where first_name = 'Kyoichi' and last_name = 'Maliniak'  (復合索引)

0.00145100 | select * from employees where first_name = 'Kyoichi' and last_name = 'Maliniak'  (intersect 索引)

0.00250350 | select * from employees where first_name = 'Kyoichi' and last_name = 'Maliniak'  (使用單獨first_name 索引)

從以上的值上面我們就可以很清楚的看到

Sending data  經過在細致的查看,具體的cost 的主要發生在 sending data 這個階段,另外一個位置雖然消耗的不同可以在微妙這個等級,但確實system lock 這個東西,比較起來, 復合索引和intersect 不相伯仲。

所以這次對比中,可以說復合索引獲勝。

故事就到此結束了?  Nein  Nein  Nein  (我很喜歡Tomas ,這個梗你懂伐)

我們繼續,建立一個index   IX_first_name_last_name_hire_date

因為我們要用ORDER BY

如何看待MYSQL 索引

我們可以通過圖來清晰的看出,我們的查詢沒有走 filesort 直接走了索引,這樣的效率,自然比走filesort 的要好的多,尤其數據量較大的情況。

但 但 但,重要的事情的說三遍,這個查詢其實和上邊雷同,但不一樣的是你的查詢條件變為了 LIKE  雖然也走了索引,但最后并未走我們的 using index condition only, 還是帶了 filesort

WHY

如何看待MYSQL 索引

我們分析一下,走using index condition only 中的 type  是  ref ,而 走filesort的 卻是, type 是 range , 我們看一下profiling, 頭一個是range 后面是等值查詢,我們可以清晰的看出,如果走了range 則要多一個步驟,creating sort index ,并且消耗不低可以說占了整體查詢消耗的90%,所以那句能不排序就不排序,在MYSQL 5.7來說還是適用的一句話。

如何看待MYSQL 索引如何看待MYSQL 索引

另外本次要戳穿的假象就是,即使你創建了索引,并且也考慮了order by適用的字段加入索引,在某些查詢時,ASC時他也要 filesort ,而不是向網上有的人說的,把ORDER BY 的字段添加到索引,就完全可以不在FILESORT(ASC),這樣的說法可不是對的哦

關于如何看待MYSQL 索引就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

建平县| 公主岭市| 苗栗市| 永靖县| 英超| 西城区| 舟山市| 新巴尔虎右旗| 盘山县| 白河县| 安平县| 绥中县| 招远市| 镇江市| 金阳县| 太仆寺旗| 都江堰市| 诸城市| 洪泽县| 会东县| 天门市| 陆川县| 康马县| 东辽县| 柘荣县| 慈溪市| 舒兰市| 芷江| 阿拉善右旗| 全南县| 襄城县| 德州市| 泗水县| 三门峡市| 余江县| 集安市| 边坝县| 涟源市| 马鞍山市| 睢宁县| 疏勒县|