索引操作

2018-01-23 10:48 更新

一、什么事索引

    索引就是一張保存了主鍵和索引字段的數(shù)據(jù)表。

    未命名文件

    該圖是數(shù)據(jù)庫針對myisam和innodb兩種存儲引擎在數(shù)據(jù)存儲上面的結構圖,從myisam中可以看出,是把我們的索引單獨存儲到一個文件中,在查詢的時候直接查詢索引即可。

二、為什么使用索引

    優(yōu)點:快速、高效檢索。如全文檢索。

    弊端:過多的索引也會減低更新表的速度,如我們在操作insert、update、delete時,我們不僅要向實體表中操作,還需要向索引表進行操作。還會過多的暫用磁盤的存儲空間。

三、索引分類

    單列索引:在創(chuàng)建索引時,索引中只有一個字段。一張表中可以有多個單列索引(主鍵索引,唯一索引,普通索引,全文索引)。

    多列索引:在創(chuàng)建索引時,索引中有多個字段。

四、語法格式

    1.在表外直接創(chuàng)建索引

CREATE INDEX indexName ON mytable(column(length)); 

    2.創(chuàng)建表時在表的結構中添加索引

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (column(length))  
 
); 

    3.刪除索引

DROP INDEX [indexName] ON mytable; 

五、什么時候使用索引

  1. 使用like時,后面為常量,要是%不在第一個字符中此時索引才會生效。例如,like '%5';此時 是不生效的。
  2. 進行大文本搜索時,使用全文檢索而不是用'%?%'。
  3. 列名為索引時,使用colum-name is null ,而column-name is not null 是沒有使用到索引

六、什么時候有索引但是沒用索引

  1. 使用索引比全盤掃描更慢。
  2. 使用memory/heap當做存儲引擎時,where條件沒有使用"="。
  3. 用or 或者 and 隔開條件時,條件兩邊設置索引情況不一致。
  4. 查詢時,where條件給的數(shù)據(jù)類型與字段的類型不一致。

七、 檢索索引使用狀況

    show status like "hanlder_read%";

    查詢出來的hanlder_read_rnd_next的值越高,則效率越低。



以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號