您好,登錄后才能下訂單哦!
這篇文章主要介紹“MySQL SHOW INDEX語法是什么意思”,在日常操作中,相信很多人在MySQL SHOW INDEX語法是什么意思問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MySQL SHOW INDEX語法是什么意思”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
如:show index from `order`
1、Table 表名
2、Non_unique 如果索引不能包括重復值則為0,如果可以則為1。也就是平時所說的唯一索引。
3、Key_name 索引名稱,如果名字相同則表明是同一個索引,而并不是重復,比如上圖中的第二、三條數據,索引名稱都是index_fID_lastTime,其實是一個聯合索引。
4、Seq_in_index 索引中的列序列號,從1開始。上圖中的二、三條數據,Seq_in_index一個是1一個是2,就是表明在聯合索引中的順序,我們就能推斷出聯合索引中索引的前后順序。
5、Column_name 索引的列名。
6、Collation 列以什么方式存儲在索引中,大概意思就是字符序。在MySQLSHOW INDEX語法中,有值’A’(升序)或NULL(無分類)。默認的類型是utf8_general_ci,這樣的大小寫不敏感,比如下面兩個sql會出現相同的查詢結果:
select * from Table where content = 'Yes'
select * from Table where content = 'yes'
這樣可能不符合你的要求,你需要大小寫敏感的情況,你可以修改字段字符集類型,如下sql
alter table bbs_posts modify column content varchar(5000) NOT NULL collate utf8_bin;
這樣修改以后就OK了。
7、Cardinality 基數的意思,表示索引中唯一值的數目的估計值。基數根據被存儲為整數的統計數據來計數,所以即使對于小型表,該值也沒有必要是精確的。基數越大,當進行聯合時,MySQL使用該索引的機會就越大。我們知道某個字段的重復值越少越適合建索引,所以我們一般都是根據Cardinality來判斷索引是否具有高選擇性,如果這個值非常小,那就需要重新評估這個字段是否適合建立索引。因為MySQL數據庫中有各種不同的存儲引擎,而每種存儲引擎對于B+樹索引的實現又各不相同。所以對Cardinality統計時放在存儲引擎層進行的,至于它是如何統計更新的在這里就不再做更深入的介紹了。
8、Sub_part 前置索引的意思,如果列只是被部分地編入索引,則為被編入索引的字符的數目。如果整列被編入索引,則為NULL。如上圖所示,除了index_content那行顯示4外,其他的都是NULL,表明index_content是一個長度為4的前置索引。對于BLOB,TEXT,或者很長的VARCHAR類型的列,必須使用前綴索引,因為MySQL不允許索引這些列的完整長度,這會讓索引變得大且慢。選擇長度的訣竅在于要選擇足夠長的前綴以保證較高的選擇性,同時又不能太長以便節約空間。下面是計算前置索引長度的一般方法:
select count(distinct left(content,3))/count(*) from bbs_posts as sel3
select count(distinct left(content,4))/count(*) from bbs_posts as sel4
select count(distinct left(content,5))/count(*) from bbs_posts as sel5
最后算出來那個長度的基數接近完整列的選擇行就OK了,完整列 select count(distinct content)/count(*) from bbs_posts
9、Packed 指示關鍵字如何被壓縮。如果沒有被壓縮,則為NULL。壓縮一般包括壓縮傳輸協議、壓縮列解決方案和壓縮表解決方案。
10、Null 如果列含有NULL,則含有YES。比如上圖中的lastOperateTime其中就包含null,我們知道建立索引的列是不允許為Null的,單列索引不存Null值,復合索引不存全為Null的值,如果列允許為Null,可能會得到“不符合預期”的結果集。我這里是為了更好的給大家展示故意構造了一些數據。
11、Index_type 索引類型,Mysql目前主要有以下幾種索引類型:FULLTEXT,HASH,BTREE,RTREE。
1). FULLTEXT
即為全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不過目前只有 CHAR、VARCHAR ,TEXT 列上可以創建全文索引。全文索引并不是和MyISAM一起誕生的,它的出現是為了解決WHERE name LIKE “%word%"這類針對文本的模糊查詢效率較低的問題。
2). HASH
由于HASH的唯一(幾乎100%的唯一)及類似鍵值對的形式,很適合作為索引。 HASH索引可以一次定位,不需要像樹形索引那樣逐層查找,因此具有極高的效率。但是,這種高效是有條件的,即只在“=”和“in”條件下高效,對于范圍查詢、排序及組合索引仍然效率不高。
3). BTREE BTREE索引就是一種將索引值按一定的算法,存入一個樹形的數據結構中(二叉樹),每次查詢都是從樹的入口root開始,依次遍歷node,獲取leaf。這是MySQL里默認和最常用的索引類型。
4). RTREE
RTREE在MySQL很少使用,僅支持geometry數據類型,支持該類型的存儲引擎只有MyISAM、BDb、InnoDb、NDb、Archive幾種。相對于BTREE,RTREE的優勢在于范圍查找。
12、 Comment Index_comment 注釋的意思。
到此,關于“MySQL SHOW INDEX語法是什么意思”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。