日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql判断是否建立索引_判断mysql中列是否要添加索引的标准

發布時間:2025/4/5 数据库 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql判断是否建立索引_判断mysql中列是否要添加索引的标准 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近再看mysql技術內部+innoDb存儲引擎一書,書中第五章-索引與算法中講到?查看表的索引信息中的一些參數含義,特作記錄

show?index?from table_name ##? 查看該表的索引信息

table?索引所在表名

Non_unique? :非唯一的索引,可以看到primary_key是0,因為必須是唯一的

Key_name?:索引的名字

Seq_in_index?:索引中該列的位置,針對聯合索引比較直觀

Column_name?:索引列的名稱

Collation?:列以什么方式存儲,可以是A或NULL,B+樹索引總是A,即排序的;如果是使用的Heap存儲引擎,并且建立了hash索引,這會顯示為NULL

Cardinality?:非常關鍵的值,標識索引中唯一值的數目的估計值,Cardinality/表的記錄數應盡可能的接近1,如果非常小,那用戶需要考慮是否還有必要創建這個索引。故在訪問高選擇性屬性的字段并從表中取出很少一部分數據時,對于字段添加B+樹索引是非常有必要的

Sub_part :是否是列的部分被索引

Packed:關鍵字是否被壓縮

Null :是否索引中含有NULL值

Index_type:索引的類型,InnoDB存儲引擎只支持B+樹索引,所以都顯示BTREE

Comment:注釋

Cardinality?值非常重要,優化器會根據這個值來判斷是否使用這個索引,但是這個值并不是實時更新的,即并非索引的更新都會更新該值,因為代價太大,只是一個大概值

在InnoDB存儲引擎中,Cardinality統計信息的更新發生在兩個操作中:insert和update。InnoDB存儲引擎內部對更新Cardinality信息的策略為:

表中1/16的數據已發生了改變

stat_modified_counter>2000 000 000

第一種策略為自從上次統計Cardinality信息后,表中的1/16的數據已經發生過變化,這是需要更新Cardinality信息

第二種情況考慮的是,如果對表中某一行數據頻繁地進行更新操作,這時表中的數據實際并沒有增加,實際發生變化的還是這一行數據,則第一種更新策略就無法適用這種情況,故在InnoDB存儲引擎內部有一個計數器start_modified_counter,

用來表示發生變化的 次數,當start_modified_counter>2 000 000 000 時,則同樣更新Cardinality信息

總結

以上是生活随笔為你收集整理的mysql判断是否建立索引_判断mysql中列是否要添加索引的标准的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。