索引 其實資料庫中的數據是按頁存放的其實索引也是按頁存放的所以本質上索引也占硬碟空間(以最小的消耗,換取最大的利益) 索引是一種有效組合數據的方式!為快速查找到指定記錄做鋪墊 目的就是快速或者某個記錄! 提高了資料庫的檢索速度!作用:大大提高資料庫的檢索速度改善資料庫性能 MySQL索引存儲類型分類 ...
索引
其實資料庫中的數據是按頁存放的
其實索引也是按頁存放的
所以本質上索引也占硬碟空間(以最小的消耗,換取最大的利益)
索引是一種有效組合數據的方式!為快速查找到指定記錄做鋪墊
目的就是快速或者某個記錄!
提高了資料庫的檢索速度!
作用:
大大提高資料庫的檢索速度
改善資料庫性能
MySQL索引存儲類型分類
01.B-樹索引:InnoDB,MyISAM均支持
02.哈希索引
其實索引是把雙刃劍(利弊共存),如果使用不當,反而會降低索引性能
主鍵:加快檢索數據/唯一標識
常用索引類型:
01.普通索引:允許在定義為索引的列中 出現 重覆值和空值!
02.唯一索引:索引列不允許出現重覆值,但是可以出現一個空值!
03.主鍵索引:創建主鍵的時候,系統會預設創建一個主鍵索引!唯一!不能為空!
04.複合索引:將我們的多個列組合起來!(name,sid)姓名和身份證號!
05.全文索引:允許值的全文查詢!允許空值和重覆值!適合在一個內容比較多的列!text!
06.空間索引:對空間數據類型的列建立的索引
■按照下列標準選擇建立索引的列
頻繁搜索的列
經常用作查詢選擇的列
經常排序、分組的列
,經常用作連接的列(主鍵/外鍵)
■請不要使用下麵的列創建索引
僅包含幾個不同值的列
表中僅包含幾行
Eg:
-- 查詢指定表的索引 SHOW INDEX FROM student; TABLE:索引所在的表 Non_unique:索引是否唯一 0:唯一 1:不唯一 key_name:索引名稱 seq_in_index:該列在索引中的位置 column_name:定義所用的列名稱 null:該列是否為空 index_type:索引類型 -- 給姓名增加 普通索引 CREATE INDEX index_studentName ON student(studentName); -- 給學生姓名和身份證號 增加 組合索引 CREATE INDEX index_name_sid ON student(studentName,identityCard) -- 刪除索引 DROP INDEX index_name_sid ON student; DROP INDEX index_studentName ON student;
-- 創建索引的原則
01.經常被查詢的列
02.經常用作選擇的列
03.經常排序,分組的列
04.經常用作連接的列(主鍵/外鍵)
使用索引時的註意事項:
01.查詢時減少使用*返回全部的列,不要返回不需要的列!
02.索引儘量要少,在位元組數小的列上建立索引!
03.where字句中有多個條件表達式的時候,包含索引的列要放在其他表達式之前!
04.在order by的字句中避免使用表達式!