MySQL學習筆記-索引

1.什麼是索引?
索引是對數據庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問數據庫表中的特定信息。如果想按特定職員的姓來查找他或她,則與在表中搜索所有的行相比,索引有助於更快地獲取信息。
索引的一個主要目的就是加快檢索表中數據的方法,亦即能協助信息搜索者儘快的找到符合限制條件的記錄ID的輔助數據結構。

2.索引的優缺點:
2.1索引的優點:
1、通過創建唯一索引,保證數據庫表每行數據的唯一性
2、大大加快數據查詢速度
3、在使用分組和排序進行數據查詢時,可以顯著減少查詢中分組和排序的時間
 
2.2索引的缺點:
1、維護索引需要耗費數據庫資源
2、索引需要佔用磁盤空間,索引文件可能比數據文件更快達到最大文件尺寸
3、當對錶的數據進行增刪改的時候,因爲要維護索引,速度會受到影響

3.索引的分類
1、普通索引和唯一索引
主鍵索引是一種特殊的唯一索引,不允許有空值
2、單列索引和複合索引
單列索引只包含單個列
複合索引指多個字段上創建的索引,只有在查詢條件中使用了創建索引時的第一個字段,索引纔會被使用。使用複合索引時遵循最左前綴集合
3、全文索引
全文索引類型爲FULLTEXT,在定義索引的列上支持值的全文查找,允許在這些索引列中插入重 復值 和空值。全文索引可以在CHAR、VARCHAR、TEXT類型列上創建。MYSQL只有MYISAM存儲引擎支持全文索引
4、空間索引
空間索引是對空間數據類型的字段建立的索引,MYSQL中的空間數據類型有4種,
分別是GEOMETRY、POINT、LINESTRING、POLYGON。MYSQL使用SPATIAL關鍵字進行擴展,使得能夠用於創建正規索引類型的語法創建空間索引。創建空間索引的列,必須將其聲明爲NOT NULL,空間索引只能在存儲引擎爲MYISAM的表中創建。

4.創建索引的三種方式
1.在創建表時就創建索引
使用[ UNIQUE | FULLTEXT | SPATIAL ] +INDEX+索引名

2.在已經創建的表上創建索引
CREATE [ UNIQUE | FULLTEXT | SPATIAL ] +INDEX+索引名
ON 表名 (屬性名 [(長度)] [ASC | DESC]);
字段解釋:
ASC:按升序排列
DESC:按降序排列
3.使用ALTER TABLE語句來創建索引
ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATIAL] INDEX
索引名 (屬性名[(長度)] [ASC | DESC]);
索引查詢結果各行的解釋:
select_type: 表示查詢中每個select子句的類型(簡單 OR複雜)
type:表示MySQL在表中找到所需行的方式,又稱“訪問類型”,常見類型如下:(從上至下,效果依次變好)
possible_keys :指出MySQL能使用哪個索引在表中找到行,查詢涉及到的字段上若存在索引,則該索引將被列出,但不一定被查詢使用
key: 顯示MySQL在查詢中實際使用的索引,若沒有使用索引,顯示爲NULL
key_len :表示索引中使用的字節數,可通過該列計算查詢中使用的索引的長度
ref :表示上述表的連接匹配條件,即哪些列或常量被用於查找索引列上的值
rows :表示MySQL根據表統計信息及索引選用情況,估算的找到所需的記錄所需要讀取的行數
Extra :包含不適合在其他列中顯示但十分重要的額外信息 如using where,using index

5.刪除索引
一些不再使用的索引會降低表的更新速度,影響數據庫的性能。
語句格式:DROP INDEX 索引名 ON 表名;

發佈了48 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章