最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談mysql增加索引不生效的幾種情況

 更新時間:2021年06月23日 09:37:51   作者:涯一涯二涯三  
增加索引就是增加一個索引文件,但是在使用過程中哪些情況增加索引無法達到預期的效果呢?感興趣的小伙伴們可以參考一下

增加索引可以提高查詢效率。

增加索引就是增加一個索引文件,存放的是數(shù)據(jù)的地址,類似與我們文檔的目錄,在查找過程中可以不用從書的內容查找,直接根據(jù)目錄對應的頁碼查找。索引是根據(jù)地址查找。
創(chuàng)建索引,索引使用的數(shù)據(jù)結構也有很多種。常見的是B-tree,哈希等。mysql默認使用的數(shù)據(jù)庫索引是innerDB,innerDB的索引結構是B-tree。
但是在使用過程中哪些情況增加索引無法達到預期的效果呢?下面列舉幾種常見情況:
假設name age address 都已經(jīng)加了索引。索引名字分別為 index_name,index_age,index_address。

用explain查看SQL的執(zhí)行計劃

執(zhí)行計劃的 type

表示MySQL在表中找到所需行的方式,又稱“訪問類型”,常見類型如下:

ALL, index, range, ref, eq_ref, const, system, NULL
ALL:Full Table Scan, MySQL將遍歷全表以找到匹配的行
index:Full Index Scan,index與ALL區(qū)別為index類型只遍歷索引樹
range:索引范圍掃描,對索引的掃描開始于某一點,返回匹配值域的行。顯而易見的索引范圍掃描是帶有between或者where子句里帶有<, >查詢。當mysql使用索引去查找一系列值時,例如IN()和OR列表,也會顯示range(范圍掃描),當然性能上面是有差異的。
ref:使用非唯一索引掃描或者唯一索引的前綴掃描,返回匹配某個單獨值的記錄行
eq_ref:類似ref,區(qū)別就在使用的索引是唯一索引,對于每個索引鍵值,表中只有一條記錄匹配,簡單來說,就是多表連接中使用primary key或者 unique key作為關聯(lián)條件。

1、使用查詢多列使用or,type=all

在這里插入圖片描述

2、使用模糊查詢,type=all

在這里插入圖片描述

3、在加索引的字段上有運算

在這里插入圖片描述

4、如果列類型是字符串,需要使用引號引用起來。name字段是字符串類型

沒引號 type=all

在這里插入圖片描述

有引號 tye=ref

在這里插入圖片描述

首先mysql有個類型轉換規(guī)則就是將“字符轉成數(shù)字”,上面的sql是包含運算的:
explain SELECT name,age,address FROM user where cast(name as signed)= 10;

5、反向查詢區(qū)分情況

(not , not in, not like, <>, != ,!>,!< ) 使用索引效果

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

其他情況

1、聯(lián)合索引中關聯(lián)字段沒有使用相同的字符集;
2、聯(lián)合索引查詢時沒有用到第一個索引字段,即不滿足最左原則;
3、本身數(shù)據(jù)量很少,mysql會判斷是否需要使用索引;

到此這篇關于淺談mysql增加索引不生效的幾種情況的文章就介紹到這了,更多相關mysql增加索引不生效內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

会东县| 黄平县| 邵东县| 安康市| 定南县| 德阳市| 青河县| 科尔| 勐海县| 科尔| 武鸣县| 册亨县| 沂水县| 体育| 宁津县| 乐都县| 咸阳市| 广昌县| 黄龙县| 高陵县| 调兵山市| 阳江市| 安国市| 蒙阴县| 弥渡县| 永寿县| 西城区| 弋阳县| 静安区| 大同市| 焦作市| 马鞍山市| 西安市| 东源县| 周宁县| 黄冈市| 龙泉市| 溧阳市| 九江市| 平遥县| 班戈县|