一共3張表 knowledge , knowledge_question , knowledge_answer ,數(shù)據(jù)在 6000~10000 之間。
創(chuàng)新互聯(lián)建站是一家做網(wǎng)站、網(wǎng)站制作,提供網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,按需定制制作,網(wǎng)站開(kāi)發(fā)公司,成立于2013年是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶(hù)品牌價(jià)值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開(kāi)發(fā),后臺(tái)程序制作以及后期項(xiàng)目運(yùn)營(yíng)并提出專(zhuān)業(yè)建議和思路。
執(zhí)行的語(yǔ)句:
執(zhí)行時(shí)間約 10分鐘 ,查看執(zhí)行計(jì)劃如下:
全部都是全表掃描,根據(jù)MySQL聯(lián)表查詢(xún)的算法 Nested-Loop Join ,MySQL查詢(xún)的結(jié)果集是3張表的笛卡爾積,所以效率特別低。
耗時(shí)變成 20毫秒
給Where條件建立索引,并不一定會(huì)使用。
比如:在表 knowledge 的字段 update 上建立索引 idx_time :
結(jié)果執(zhí)行上來(lái)看,并沒(méi)有使用索引 idx_time 。
如果where條件從 k.update_time'2019-01-03 12:00:00' 修改為 k.update_time='2019-01-03 12:00:00' (從 變成 = )
則會(huì)使用索引 idx_time
在建立索引的時(shí)候,會(huì)遇到 Table Metadata Lock 的問(wèn)題,可以先 show processlist ,找到占用表鎖的連接,然后 kill 。
SHOW INDEX FROM tbl_name [FROM db_name]
例如,
mysql SHOW INDEX FROM mytable FROM mydb;
mysql SHOW INDEX FROM mydb.mytable;
SHOW KEYS是SHOW INDEX的同義詞。您也可以使用mysqlshow -k db_name tbl_name命令列舉一個(gè)表的索引。
SHOW INNODB STATUS語(yǔ)法
SHOW INNODB STATUS
SHOW INDEX會(huì)返回表索引信息。其格式與ODBC中的SQLStatistics調(diào)用相似。
SHOW INDEX會(huì)返回以下字段:
· Table
表的名稱(chēng)。
· Non_unique
如果索引不能包括重復(fù)詞,則為0。如果可以,則為1。
· Key_name
索引的名稱(chēng)。
· Seq_in_index
索引中的列序列號(hào),從1開(kāi)始。
· Column_name
列名稱(chēng)。
· Collation
列以什么方式存儲(chǔ)在索引中。在MySQL中,有值‘A’(升序)或NULL(無(wú)分類(lèi))。
· Cardinality
索引中唯一值的數(shù)目的估計(jì)值。通過(guò)運(yùn)行ANALYZE TABLE或myisamchk -a可以更新?;鶖?shù)根據(jù)被存儲(chǔ)為整數(shù)的統(tǒng)計(jì)數(shù)據(jù)來(lái)計(jì)數(shù),所以即使對(duì)于小型表,該值也沒(méi)有必要是精確的?;鶖?shù)越大,當(dāng)進(jìn)行聯(lián)合時(shí),MySQL使用該索引的機(jī)會(huì)就越大。
· Sub_part
如果列只是被部分地編入索引,則為被編入索引的字符的數(shù)目。如果整列被編入索引,則為NULL。
· Packed
指示關(guān)鍵字如何被壓縮。如果沒(méi)有被壓縮,則為NULL。
· Null
如果列含有NULL,則含有YES。如果沒(méi)有,則該列含有NO。
· Index_type
用過(guò)的索引方法(BTREE, FULLTEXT, HASH, RTREE)。
· Comment
多種評(píng)注。
顯示一個(gè)表所有索引的SQL語(yǔ)句是:
show index from 數(shù)據(jù)庫(kù)名.表名
查看某表某一列上的索引使用下面的SQL語(yǔ)句:
show index from 數(shù)據(jù)庫(kù)名.表名 where column_name like '列名'
下面的SQL語(yǔ)句在我的數(shù)據(jù)庫(kù)上執(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庫(kù)下有幾個(gè)表
需求2:統(tǒng)計(jì)所有庫(kù)下表的個(gè)數(shù)
需求3:統(tǒng)計(jì)每個(gè)庫(kù)的總數(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ì)記錄主鍵值,一般情況(除等值查詢(xún)),最終都會(huì)通過(guò)聚集索引(主鍵)來(lái)找到需要的數(shù)據(jù)
第二種
一般經(jīng)常用來(lái)查詢(xún)的列作為索引
索引可以有多個(gè),但是索引名不可重名
第一種:單列索引
第二種:前綴索引
前綴索引只能應(yīng)用到字符串列,數(shù)字列不能用前綴索引
聯(lián)合索引說(shuō)明:如果在一個(gè)表內(nèi)對(duì)A、B、C三個(gè)列創(chuàng)建聯(lián)合索引那么創(chuàng)建索引將按照如下情況創(chuàng)建索引表:
A
AB
ABC
======================================================
(1)查詢(xún)列無(wú)索引
(2)語(yǔ)句不符合走走索引條件
(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級(jí)別
(1)、 、 =、 =、 like、 between and
(2)or、in
(3)!=、 not in
多表連接查詢(xún),非驅(qū)動(dòng)表連接條件是主鍵或唯一鍵
一般多表查詢(xún)的時(shí),最左側(cè)的表為驅(qū)動(dòng)表,右側(cè)的為非驅(qū)動(dòng)表,下邊的例子中country標(biāo)為非驅(qū)動(dòng)表
7.1.1 數(shù)字類(lèi)型
7.1.2 字符串類(lèi)型:
字符集
中文
gbk 2字節(jié)
utf8 3字節(jié)
utf8mb4 4字節(jié)
utf8mb4 為例:
舉例(1)聯(lián)合索引等值查詢(xún)
舉例(2) 聯(lián)合索引中有不等值查詢(xún)
如果Extra列出現(xiàn)Using temporary、Using filesort,兩項(xiàng)內(nèi)容,那么考慮以下語(yǔ)句的問(wèn)題。
group by
order by
distinct
join on
union
新聞標(biāo)題:怎么查mysql表索引 mysql如何查看表的索引
當(dāng)前鏈接:http://www.muchs.cn/article8/docsjip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、域名注冊(cè)、App設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)、靜態(tài)網(wǎng)站、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容