1.使用以下語句檢視表索引:
show index from tablename;
2.使用以下語句檢視執行計畫:
explain select * from tablename;
注意檢視可用的索引和實際使用的索引。
3.檢視慢查詢
show variables like
'%slow%';
4.聯合索引使用的時候,優先從最左邊的開始用。
例如建立的聯合索引為(starttime,endtime,cardnum),則以下查詢可以用到聯合索引:
1)select * from
table
where starttime >='2016-10-30 10:34:34';
2)select * from
table
where starttime >='2016-10-30 10:34:34'
and endtime <='2016-10-31 10:34:34';
3)select * from
table
where starttime >='2016-10-30 10:34:34'
and cardnum = '8897654';
以下查詢無法使用聯合索引:
1)select * from
table
where endtime >='2016-10-30 10:34:34';
2)select * from
table
where endtime >='2016-10-30 10:34:34'
and starttime <='2016-10-31 10:34:34';
結論:在建立多列索引時,要根據業務需求,where子句中使用最頻繁的一列放在最左邊。
5.exists使用總結:
exists對外表用loop逐條查詢,每次查詢都會檢視exists的條件語句,當 exists裡的條件語句能夠返回記錄行時(無論記錄行是的多少,只要能返回),條件就為真,返回當前loop到的這條記錄,反之如果exists裡的條 件語句不能返回記錄行,則當前loop到的這條記錄被丟棄,exists的條件就像乙個bool條件,當能返回結果集則為true,不能返回結果集則為 false
mysql 索引總結 mysql索引總結
mysql中每乙個表都有乙個聚簇索引clusted index,該所索引是預設建立的,除此之外的表上的每乙個非聚簇索引都是二級索引,又叫輔助索引 secondary indexes 以innodb來說,每個innodb表具有乙個特殊的索引稱為聚集索引,如果您的表上定義有主鍵,該主鍵索引是聚集索引,如...
mysql次級索引 MySQL 索引總結
1 索引是做什麼的?想象一下,你面前有本詞典,資料就是書的正文內容,你就是那個cpu,而索引,則是書的目錄 索引用於快速找出在某個列中有一特定值的行。不使用索引,mysql必須從第1條記錄開始然後讀完整個表直到找出相關的行。表越大,花費的時間越多。如果表中查詢的列有乙個索引,mysql能快速到達乙個...
mysql 索引總結
索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄即可迅速得到...