校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > mysql索引基數概念與用法示例

mysql索引基數概念與用法示例

熱門標簽:淄博400電話申請 電銷機器人 行業 電銷機器人各個細節介紹 昆明電信400電話辦理 電話機器人市場趨勢 南昌高頻外呼系統哪家公司做的好 俄國地圖標注app 溫州瑞安400電話怎么申請 百度地圖標注后不顯示

本文實例講述了mysql索引基數概念與用法。分享給大家供大家參考,具體如下:

Cardinality(索引基數)是mysql索引很重要的一個概念

索引基數是數據列所包含的不同值的數量。例如,某個數據列包含值1、2、3、4、5、1,那么它的基數就是5。索引的基數相對于數據表行數較高(也就是說,列中包含很多不同的值,重復的值很少)的時候,它的工作效果最好。如果某數據列含有很多不同的年齡,索引會很快地分辨數據行。如果某個數據列用于記錄性別(只有”M”和”F”兩種值),那么索引的用處就不大。如果值出現的幾率幾乎相等,那么無論搜索哪個值都可能得到一半的數據行。在這些情況下,最好根本不要使用索引,因為查詢優化器發現某個值出現在表的數據行中的百分比很高的時候,它一般會忽略索引,進行全表掃描。慣用的百分比界線是”30%”

另一個概念叫做索引選擇性

索引選擇性=索引基數/數據總數,基數可以通過“show index from 表名”查看。
越接近1就越有可能利用索引,也可以理解1為百分百
高索引選擇性的好處就是mysql查找匹配的時候可以過濾更多的行,唯一索引的選擇性最佳,值為1。

這里是我自己的一張表,數據量并不高,只是為了測驗索引選擇性

select * from articles
id 標題 姓名
15 Title 0 大熊
16 Title 1 大熊
17 Title 2 大熊
18 Title 3 大熊
19 Title 4 大熊
20 Title 5 大熊
21 Title 6 大熊
22 Title 7 大熊
23 Title 8 二熊
24 Title 9 二熊

id為默認整型自增主鍵

現在增加author列為索引并查看articles表的所有索引

ALTER TABLE `articles` ADD INDEX (`author`)
SHOW INDEX FROM articles
table non_unique key_name seq_in_index column_name collation cardinality sub_part packed null index_type
articles 0 PRIMARY 1 id A 10 NULL NULL  BTREE
articles 1 author 1 author A 2 NULL NULL  BTREE

說下各個字段的意義

  • table 表名
  • non_unique 如果索引不能包括重復詞,則為0。如果可以,則為1。
  • key_name 索引名
  • seq_in_index 索引中的列序列號,從1開始
  • column_name 列名
  • collation 列以什么方式存儲在索引中。在MySQLSHOW INDEX語法中,有值'A'(升序)或NULL(無分類)
  • cardinality 索引基數
  • sub_part 如果列只是被部分地編入索引,則為被編入索引的字符的數目。如果整列被編入索引,則為NULL。
  • packed 指示關鍵字如何被壓縮。如果沒有被壓縮,則為NULL。
  • null 如果列含有NULL,則含有YES。如果沒有,則該列含有NO。
  • index_type 所用索引存儲方法(BTREE, FULLTEXT, HASH, RTREE)

可以看到,表articles已經有兩個索引了

id索引不包含重復詞 為主鍵 列名id 升序排列 索引基數為10 沒有部分索引 沒有壓縮 不含null 存儲方式為btree

author索引包含重復詞 索引名author 列名author 升序排列 索引基數為2 沒有部分索引 沒有壓縮 不含null 存儲方式為btree

根據索引選擇性的算法,id索引選擇性為10/10 =1 author索引選擇性為2/10=0.2, 下面咱們測試一下,使用explain看一下語句分析

explain select * from articles where id = 15
id select_type table partitions type possible_keys key key_len ref rows filtered extra
1 SIMPLE articles NULL const PRIMARY PRIMARY 4 const 1 100.00 NULL

這邊再說一下explain這個命令

explain顯示了mysql如何使用索引來處理select語句以及連接表。可以幫助選擇更好的索引和寫出更優化的查詢語句。說一下每個字段的意義

1.id SELECT識別符。這是SELECT查詢序列號。這個不重要,查詢序號即為sql語句執行的順序

2.select_type select類型

2.1.SIMPLE 進行不需要Union操作或不含子查詢的簡單select查詢時,響應查詢語句的select_type 即為simple,無論查詢語句是多么復雜,執行計劃中select_type為simple的單位查詢一定只有一個
2.2.PRIMARY 一個需要Union操作或含子查詢的select查詢執行計劃中,位于最外層的select_type即為primary。與simple一樣,select_type為primary的單位select查詢也只存在1個
2.3.union 由union操作聯合而成的單位select查詢中,除第一個外,第二個以后的所有單位select查詢的select_type都為union。union的第一個單位select的select_type不是union,而是DERIVED。它是一個臨時表,用于存儲聯合(Union)后的查詢結果
2.4.DEPENDENT UNION dependent UNION select_type一樣,dependent union出現在union或union all 形成的集合查詢中。此處的dependent表示union或union all聯合而成的單位查詢受外部影響
2.5.union result union result為包含union結果的數據表

3.table 表名

4.type 連接類型,有多個參數,先從最佳類型到最差類型介紹 也是本篇的重點

4.1 const,表最多有一個匹配行,const用于比較primary key 或者unique索引。因為只匹配一行數據,所以很快,也可以理解為最優化的索引,常數查找
4.2 eq_ref 對于eq_ref的解釋,mysql手冊是這樣說的:”對于每個來自于前面的表的行組合,從該表中讀取一行。除了const類型,這可能是最好的聯接類型”
4.3 ref 對于每個來自于前面的表的行組合,所有有匹配索引值的行將從這張表中讀取。如果聯接只使用鍵的最左邊的前綴,或如果鍵不是UNIQUE或PRIMARY KEY(換句話說,如果聯接不能基于關鍵字選擇單個行的話),則使用ref。如果使用的鍵僅僅匹配少量行,該聯接類型是不錯的
4.4 ref_or_null 該聯接類型如同ref,但是添加了MySQL可以專門搜索包含NULL值的行。在解決子查詢中經常使用該聯接類型的優化
4.5 index_merge 該聯接類型表示使用了索引合并優化方法。在這種情況下,key列包含了使用的索引的清單,key_len包含了使用的索引的最長的關鍵元素
4.6 unique_subquery
4.7 index_subquery
4.8 range 給定范圍內的檢索,使用一個索引來檢查行
4.9 index 該聯接類型與ALL相同,除了只有索引樹被掃描。這通常比ALL快,因為索引文件通常比數據文件小。(也就是說雖然all和Index都是讀全表,但index是從索引中讀取的,而all是從硬盤中讀的)
4.10 ALL 對于每個來自于先前的表的行組合,進行完整的表掃描。如果表是第一個沒標記const的表,這通常不好,并且通常在它情況下很差。通常可以增加更多的索引而不要使用ALL,使得行能基于前面的表中的常數值或列值被檢索出

5.possible_keys 提示使用哪個索引會在該表中找到行,不太重要

6.keys 指明MYSQL查詢使用的索引

7.key_len MYSQL使用的索引長度

8.ref 顯示使用哪個列或常數與key一起從表中選擇行

9.rows 顯示MYSQL執行查詢的行數,數值越大越不好,說明沒有用好索引

10.Extra 該列包含MySQL解決查詢的詳細信息

可以看到 id查詢 使用了id索引 簡單查詢 查詢類型為最優的常量查詢
然后咱們換一個查詢試試,這次使用作者索引

explain select * from articles where author = "大熊"
1 SIMPLE articles NULL ALL author NULL NULL NULL 10 80.00 Using where

可以很清楚的看到 使用了author索引 簡單查詢 查詢類型為最差的全表掃描
先不急著解釋,還是這個語句,咱們換成二熊

explain select * from articles where author = "二熊"
1 SIMPLE articles NULL ref author author 1022 const 2 100.00 NULL

可以看到這次的查詢類型為ref

也就是說,因為作者為大熊的數據行數,超過了總數據的百分之30 所以mysql認為全表掃描比使用索引更快
這就是索引基數和索引選擇性這個概念的意義,所以在建立索引的時候,要注意要把索引建立在索引基數高的列上

更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL索引操作技巧匯總》、《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數據庫鎖相關技巧匯總》

希望本文所述對大家MySQL數據庫計有所幫助。

您可能感興趣的文章:
  • 由不同的索引更新解決MySQL死鎖套路
  • 通過唯一索引S鎖與X鎖來了解MySQL死鎖套路
  • 分享幾道關于MySQL索引的重點面試題
  • Mysql中的索引精講
  • 新手學習MySQL索引

標簽:葫蘆島 洛陽 安徽 海口 吐魯番 甘南 嘉峪關 拉薩

巨人網絡通訊聲明:本文標題《mysql索引基數概念與用法示例》,本文關鍵詞  mysql,索引,基數,概念,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql索引基數概念與用法示例》相關的同類信息!
  • 本頁收集關于mysql索引基數概念與用法示例的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    奇米综合一区二区三区精品视频| av不卡免费电影| 欧美日韩国产经典色站一区二区三区| 日本一区二区不卡视频| 精品中文字幕一区二区小辣椒| 日本精品一区二区三区高清| 一区二区三区鲁丝不卡| 91麻豆视频网站| 亚洲一区二区三区国产| 欧美精品xxxxbbbb| 欧美a级一区二区| www久久久久| 99久久伊人精品| 亚洲一区二区三区四区在线| 91精品国产aⅴ一区二区| 美美哒免费高清在线观看视频一区二区| 欧美一区二区三区免费在线看| 性做久久久久久免费观看欧美| 欧美综合天天夜夜久久| 麻豆一区二区99久久久久| 精品国产乱子伦一区| 日韩一级视频免费观看在线| 美日韩一区二区三区| 国产情人综合久久777777| 91蜜桃传媒精品久久久一区二区| 亚洲综合在线第一页| 欧美一二三区在线观看| 亚洲精品菠萝久久久久久久| 欧美日韩色一区| 精品一区二区三区在线播放视频 | 99精品视频在线观看| 国产精品久久久久影院亚瑟 | 亚洲精品成人天堂一二三| 欧美一区二区三区视频免费播放 | 人人狠狠综合久久亚洲| 久久精品男人的天堂| 在线观看日韩精品| 国产精品一区二区视频| 日韩一区在线播放| 国产精品2024| 午夜精品久久久久久不卡8050| 国产视频亚洲色图| 欧美视频完全免费看| 成人午夜激情影院| 免费成人性网站| 欧美一卡二卡在线观看| 91美女视频网站| 国产一区日韩二区欧美三区| 亚洲国产cao| 亚洲国产精品成人久久综合一区 | 日韩精品一区二区三区在线观看| 成人a级免费电影| 精品在线观看免费| 亚洲综合清纯丝袜自拍| 国产欧美一区二区在线| 国产成人在线网站| 麻豆国产一区二区| 丝袜美腿亚洲色图| 亚洲男人都懂的| 国产欧美日韩在线| 欧美成人高清电影在线| 欧美网站一区二区| 亚洲视频香蕉人妖| 欧美日韩视频在线第一区 | 亚洲女人的天堂| 久久亚洲精品小早川怜子| 欧美精品乱码久久久久久按摩| 久久精品国产亚洲5555| 日本欧美韩国一区三区| 3d动漫精品啪啪1区2区免费| 欧美色倩网站大全免费| 一区二区三区国产豹纹内裤在线| 欧美日韩一级黄| 欧美日韩一区二区三区在线看| 国产一区二区三区蝌蚪| 久久机这里只有精品| 久久久久久影视| 国产精品资源站在线| 韩国av一区二区| 日韩主播视频在线| 日本va欧美va瓶| 国产精品久久久久永久免费观看 | 亚洲自拍另类综合| 亚洲一区二区三区在线看| 91精品免费在线| 一本色道**综合亚洲精品蜜桃冫| av午夜一区麻豆| 天天综合色天天| 一区二区三区在线观看动漫| 久久综合一区二区| 国产午夜精品一区二区三区嫩草 | 亚洲品质自拍视频网站| 99精品国产一区二区三区不卡| 亚洲一区二区综合| 中文字幕乱码亚洲精品一区| 91 com成人网| 久久国产人妖系列| 亚洲国产精品综合小说图片区| 国产色婷婷亚洲99精品小说| 国产农村妇女毛片精品久久麻豆| 91精品欧美一区二区三区综合在| 精品成人佐山爱一区二区| 91精品国产色综合久久不卡蜜臀 | www.亚洲激情.com| 国产一区二区三区精品欧美日韩一区二区三区 | 91精品1区2区| 99精品一区二区三区| 欧美午夜不卡视频| 色婷婷综合久久久中文字幕| 欧美日韩精品欧美日韩精品一| 欧美日韩国产高清一区| 99精品久久免费看蜜臀剧情介绍| 欧美亚洲国产一卡| 97久久人人超碰| 欧美久久久久久久久中文字幕| 欧美日韩视频在线观看一区二区三区 | 亚洲黄色av一区| 依依成人精品视频| 久久99精品久久久久久| 国产 欧美在线| eeuss鲁一区二区三区| 欧美日韩久久久一区| 91黄色免费版| 精品国产亚洲在线| 欧美理论电影在线| 国产精品久久免费看| 亚洲va欧美va人人爽| 蜜桃视频一区二区三区| 91小视频免费观看| 在线影视一区二区三区| 久久综合九色综合97婷婷| 欧美岛国在线观看| 国产偷国产偷亚洲高清人白洁| 一区二区三区四区在线播放 | 国产白丝精品91爽爽久久| 色呦呦国产精品| 欧美一区二区三区视频免费播放| 中文字幕在线观看一区| 一区二区在线看| 高清国产一区二区| 日韩一区二区三区四区| 亚洲精品在线观| 在线视频你懂得一区| 欧美老年两性高潮| 一区二区三区丝袜| 一区二区三区日韩欧美| 亚洲国产成人va在线观看天堂| 91视频你懂的| 91精品国产综合久久久久久久久久 | 欧美成人一级视频| 国产精品天天看| 视频一区二区不卡| 激情五月播播久久久精品| 色呦呦国产精品| 精品亚洲成av人在线观看| 欧美午夜宅男影院| 中文字幕视频一区二区三区久| 亚洲福利视频一区二区| 日本高清无吗v一区| 日韩久久久久久| 日韩电影免费一区| 欧美三级在线播放| wwww国产精品欧美| 国内外成人在线| 在线精品观看国产| 亚洲人成精品久久久久久| 精品无人码麻豆乱码1区2区| 不卡av免费在线观看| 国产精品久久久久久久蜜臀| 丝袜亚洲另类丝袜在线| 欧美日本免费一区二区三区| 最新高清无码专区| 三级成人在线视频| 欧美一区二区三区人| 亚洲欧美日韩国产综合在线| 夜色激情一区二区| 色欧美乱欧美15图片| 中文字幕 久热精品 视频在线 | av午夜精品一区二区三区| 国产精品久久久一本精品| 国产精品国产自产拍高清av| 国产成人免费9x9x人网站视频| 337p亚洲精品色噜噜狠狠| 亚洲精品视频自拍| 欧美午夜不卡在线观看免费| 中文字幕第一区综合| 成人18精品视频| 亚洲国产经典视频| 风间由美性色一区二区三区| 精品国产乱码久久久久久久| 亚洲男人的天堂av| 在线免费观看视频一区| 日韩视频在线你懂得| 亚洲mv在线观看| 精品国产第一区二区三区观看体验| 亚洲小少妇裸体bbw| 日韩午夜av电影| 国产成人av一区二区三区在线| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 免费av网站大全久久|