利用索引改善性能

  • 單字段索引

基於單個字段建立的數據庫

語法性能

--爲表中的column_name建立字段
CREATE INDEX index_name
ON table_name(column_name)

 

  • 惟一索引

惟一索引用於改善性能和保證數據完整性,惟一所索引不容許表裏具備重複值code

CREATE UNIQUE INDEX  index_name
ON table_name(column_name)

對象

惟一索引只能用於在表裏沒有重複值的字段,換句話說,若是現有表已經包含被索引關鍵字的記錄,就不能再對它建立惟一索引。此外,容許NULL值的字段上也不能建立惟一索引索引

  • 組合索引

基於一個表裏兩個或者多個字段的索引table

/*
老是會在查詢指定的字段應該方在首位
最具備限制的應該排在前面
*/
CREATE INDEX index_nmae
ON table_name(column1,column2)

 

  • 引號索引

數據庫服務程序在穿件對象時自動建立的,好比對於主鍵約束和惟一性約束自動建立索引效率

  • 索引的使用
  • 什麼時候應當避免索引

a、索引不該該用於小規模的表語法

b、字段用於WHERE 子句做爲過濾器會返回表裏的大部分記錄式,該字段就不適合設置索引引用

c、常常會被批量更新的表能夠具備索引,但批量操做的性能會因爲索引而下降,對於常常會被加載或批量操做的表來講,能夠在執行批量操做以前去除索引,在完成操做以後再從新穿件索引。這是由於當表裏插入數據時,索引會被更新,從而增長了額外的開銷程序

d、不該該對包含大量NULL值的字段設置索引,索引對不一樣記錄中包含不一樣數據的字段特別有效。字段中過多的NULL值會嚴重影響索引的運行效率

e、常常被操做的字段不該該設置索引,由於對索引的維護會變的很繁重

一、表和因此都應該進行事先的規劃,不要認爲使用索引就能解決全部的性能問題,索引可能根本不會改善性能(甚至可能下降性能)而知識佔據磁盤空間

二、對於特別長的關鍵字穿件索引是要十分謹慎,由於大量 I/O開銷會不可避免的減低數據庫性能

  • 修改索引

 

  • 刪除索引
DROP INDEX index_name

--在MySQL的語法結構稍有不一樣,須要指定建立索引的表格
DROP INDEX index_name
ON table_name
相關文章
相關標籤/搜索