顯示一個(gè)表所有索引的SQL語句是:
公司主營業(yè)務(wù):網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出樂安免費(fèi)做網(wǎng)站回饋大家。
show index from 數(shù)據(jù)庫名.表名
查看某表某一列上的索引使用下面的SQL語句:
show index from 數(shù)據(jù)庫名.表名 where column_name like '列名'
下面的SQL語句在我的數(shù)據(jù)庫上執(zhí)行成功:
show index from web.clubuser where column_name like 'user'。
方法
(1) 根據(jù)需求找到關(guān)聯(lián)表
(2)找到關(guān)聯(lián)條件
重點(diǎn)的表tables
* 需求1:統(tǒng)計(jì)world庫下有幾個(gè)表
需求2:統(tǒng)計(jì)所有庫下表的個(gè)數(shù)
需求3:統(tǒng)計(jì)每個(gè)庫的總數(shù)據(jù)大小
--單表占空間:AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH
什么使索引:索引其實(shí)就是一種算法
BTree
HASH
Rtree
Fulltext
輔助索引
輔助索引只提取索引列作為葉子節(jié)點(diǎn)
聚集索引
聚集索引提取整行數(shù)據(jù)作為葉子節(jié)點(diǎn)
1、輔助索引和聚集索引最大的區(qū)別就在于葉子節(jié)點(diǎn),枝節(jié)點(diǎn)和根節(jié)點(diǎn)原理相同
2、輔助索引會(huì)記錄主鍵值,一般情況(除等值查詢),最終都會(huì)通過聚集索引(主鍵)來找到需要的數(shù)據(jù)
第二種
一般經(jīng)常用來查詢的列作為索引
索引可以有多個(gè),但是索引名不可重名
第一種:單列索引
第二種:前綴索引
前綴索引只能應(yīng)用到字符串列,數(shù)字列不能用前綴索引
聯(lián)合索引說明:如果在一個(gè)表內(nèi)對A、B、C三個(gè)列創(chuàng)建聯(lián)合索引那么創(chuàng)建索引將按照如下情況創(chuàng)建索引表:
A
AB
ABC
======================================================
(1)查詢列無索引
(2)語句不符合走走索引條件
(3)需要查看全表
即把有索引的列全便利一遍
、 、 =、 =、 like、 between and 在范圍掃描中,這些會(huì)受到B+tree索引葉子節(jié)點(diǎn)上額外的優(yōu)化,因?yàn)檫@些是連續(xù)取值的
or、in 這兩個(gè)不是連續(xù)的取值,所以不能受到B+tree索引的額外優(yōu)化,使用時(shí)相當(dāng)于Btree索引
!=、 not in 只有在主鍵列才走索引也是range級別
(1)、 、 =、 =、 like、 between and
(2)or、in
(3)!=、 not in
多表連接查詢,非驅(qū)動(dòng)表連接條件是主鍵或唯一鍵
一般多表查詢的時(shí),最左側(cè)的表為驅(qū)動(dòng)表,右側(cè)的為非驅(qū)動(dòng)表,下邊的例子中country標(biāo)為非驅(qū)動(dòng)表
7.1.1 數(shù)字類型
7.1.2 字符串類型:
字符集
中文
gbk 2字節(jié)
utf8 3字節(jié)
utf8mb4 4字節(jié)
utf8mb4 為例:
舉例(1)聯(lián)合索引等值查詢
舉例(2) 聯(lián)合索引中有不等值查詢
如果Extra列出現(xiàn)Using temporary、Using filesort,兩項(xiàng)內(nèi)容,那么考慮以下語句的問題。
group by
order by
distinct
join on
union
查看索引
mysql show index from tblname;
mysql show keys from tblname;
· Table
表的名稱。
· Non_unique
如果索引不能包括重復(fù)詞,則為0。如果可以,則為1。
· Key_name
索引的名稱。
· Seq_in_index
索引中的列序列號,從1開始。
· Column_name
列名稱。
· Collation
列以什么方式存儲(chǔ)在索引中。在MySQL中,有值‘A’(升序)或NULL(無分類)。
· Cardinality
索引中唯一值的數(shù)目的估計(jì)值。通過運(yùn)行ANALYZE TABLE或myisamchk -a可以更新。基數(shù)根據(jù)被存儲(chǔ)為整數(shù)的統(tǒng)計(jì)數(shù)據(jù)來計(jì)數(shù),所以即使對于小型表,該值也沒有必要是精確的?;鶖?shù)越大,當(dāng)進(jìn)行聯(lián)合時(shí),MySQL使用該索引的機(jī) 會(huì)就越大。
· Sub_part
如果列只是被部分地編入索引,則為被編入索引的字符的數(shù)目。如果整列被編入索引,則為NULL。
· Packed
指示關(guān)鍵字如何被壓縮。如果沒有被壓縮,則為NULL。
· Null
如果列含有NULL,則含有YES。如果沒有,則該列含有NO。
· Index_type
用過的索引方法(BTREE, FULLTEXT, HASH, RTREE)。
· Comment
在mysql中,索引是一種特殊的數(shù)據(jù)庫結(jié)構(gòu),由數(shù)據(jù)表中的一列或多列組合而成,可以用來快速查詢數(shù)據(jù)表中有某一特定值的記錄。
通過索引,查詢數(shù)據(jù)時(shí)不用讀完記錄的所有信息,而只是查詢索引列即可。
通過索引,查詢數(shù)據(jù)時(shí)不用讀完記錄的所有信息,而只是查詢索引列。否則,數(shù)據(jù)庫系統(tǒng)將讀取每條記錄的所有信息進(jìn)行匹配。
可以把索引比作新華字典的音序表。例如,要查“庫”字,如果不使用音序,就需要從字典的 400 頁中逐頁來找。但是,如果提取拼音出來,構(gòu)成音序表,就只需要從 10 多頁的音序表中直接查找。這樣就可以大大節(jié)省時(shí)間。
因此,使用索引可以很大程度上提高數(shù)據(jù)庫的查詢速度,還有效的提高了數(shù)據(jù)庫系統(tǒng)的性能。
索引的優(yōu)缺點(diǎn)
索引有其明顯的優(yōu)勢,也有其不可避免的缺點(diǎn)。
優(yōu)點(diǎn)
索引的優(yōu)點(diǎn)如下:
1、通過創(chuàng)建唯一索引可以保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性。
2、可以給所有的 MySQL 列類型設(shè)置索引。
3、可以大大加快數(shù)據(jù)的查詢速度,這是使用索引最主要的原因。
4、在實(shí)現(xiàn)數(shù)據(jù)的參考完整性方面可以加速表與表之間的連接。
5、在使用分組和排序子句進(jìn)行數(shù)據(jù)查詢時(shí)也可以顯著減少查詢中分組和排序的時(shí)間
缺點(diǎn)
增加索引也有許多不利的方面,主要如下:
1、創(chuàng)建和維護(hù)索引組要耗費(fèi)時(shí)間,并且隨著數(shù)據(jù)量的增加所耗費(fèi)的時(shí)間也會(huì)增加。
2、索引需要占磁盤空間,除了數(shù)據(jù)表占數(shù)據(jù)空間以外,每一個(gè)索引還要占一定的物理空間。如果有大量的索引,索引文件可能比數(shù)據(jù)文件更快達(dá)到最大文件尺寸。
3、當(dāng)對表中的數(shù)據(jù)進(jìn)行增加、刪除和修改的時(shí)候,索引也要?jiǎng)討B(tài)維護(hù),這樣就降低了數(shù)據(jù)的維護(hù)速度。
使用索引時(shí),需要綜合考慮索引的優(yōu)點(diǎn)和缺點(diǎn)。