Mysql Type中的all和index区别?
生活随笔
收集整理的這篇文章主要介紹了
Mysql Type中的all和index区别?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
all
這便是所謂的“全表掃描”,如果是展示一個數據表中的全部數據項,倒是覺得也沒什么,如果是在一個查找數據項的sql中出現了all類型,那通常意味著你的sql語句處于一種最原生的狀態,有很大的優化空間。
為什么這么說呢?因為all是一種非常暴力和原始的查找方法,非常的耗時而且低效。用all去查找數據就好比這樣的一個情形:S學校有倆萬人,我告訴你你給我找到小明,然后你怎么做呢!你當然是把全校倆萬人挨個找一遍,即使你很幸運第一個人便找到了小明,但是你仍然不能停下,因為你無法確認是否有另外一個小明存在,直到你把倆萬人找完為止。所以,基本所有情況,我們都要避免這樣類型的查找,除非你不得不這樣做。
index
這種連接類型只是另外一種形式的全表掃描,只不過它的掃描順序是按照索引的順序。這種掃描根據索引然后回表取數據,和all相比,他們都是取得了全表的數據,而且index要先讀索引而且要回表隨機取數據,因此index不可能會比all快(取同一個表數據),但為什么官方的手冊將它的效率說的比all好,唯一可能的原因在于,按照索引掃描全表的數據是有序的。這樣一來,結果不同,也就沒法比效率的問題了。
所以說如果type為all或者index,都應對其進行優化。甚至我們可以將其理解相當于索引無效。
總結
以上是生活随笔為你收集整理的Mysql Type中的all和index区别?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL Explain详解,分析语句
- 下一篇: 浅析索引失效(一)