mysql
索引是一種資料結構
查詢效率獲得提高
myisam:
b+樹資料和索引分離
由三個檔案組成
frm 存放建立的表的基礎資訊
myi 索引
myd 資料
資料儲存,隨意儲存,離散程度大,即非聚集索引
即myisam都是非聚集索引
innodb
b+樹資料和索引結合,把索引當成資料的一部分
1、資料的存放依賴索引
1、主鍵 主鍵索引 主索引
2、唯一鍵 唯一索引 主索引
主索引:存放資料的索引,不允許索引值重複
3、新增乙個隱藏字段 6個位元組 主索引
葉子節點不能儲存完整的資料,所以其儲存的是主索引的索引值
儲存資料的索引叫主索引,其他的都叫輔助索引(葉子節點)
輔助索引查詢兩次:
第一次輔助索引找到主索引的索引值
第二次主索引找到資料
索引的建立能提高效率 能在其他欄位上建立索引
為什麼不自動建立:
索引是乙個資料結構,佔空間和其他資源
空間換時間的概率
索引的優化:
1、什麼時候建立索引
1、經常用於查詢的字段
2、主鍵的字段
3、用於兩表連線的字段 e.g.:where
4、經常用於排序查詢的字段
2、什麼時候不應該建立
1、不經常用於查詢的字段
2、數值較少的字段
3、text,blob型別等的字段,數值太大了,i/o效率低
4、修改效能大於查詢效能 insert密集型 排序
索引的分類
索引建立時,欄位的特性
1、普通索引
1、create index index_name on tbname(field_name);
2、alter table tbname add index index_name on field_name;
3、建表的過程中
index index_name(field_name);
2、主鍵索引
3、唯一索引
4、全文索引(一般情況不建議用)
非葉子節點的索引值都是text欄位的數值
數值太大了,索引結構龐大
i/o效率低
5、單列索引
6、組合索引(屬於多列索引)
最左字首原則,從最左邊開始包含
索引的注意事項:
1、包含null的列
2、使用短索引 提高i/o效率
3、like語句的操作,模糊匹配,不會用到索引
Mysql 索引知識點
概述 之前寫過一篇mysql b 樹學習,簡單的介紹了b 數以及mysql使用b 樹的原因,有了這些基礎知識點,對mysql索引的型別以及索引使用的一些技巧,就比較容易理解了。覆蓋索引 建立了乙個輔助索引,如果能直接從這個輔助索引檔案中獲取到資料,而無需去訪問聚集索引 自增主鍵索引 檔案的話,那麼這...
Mysql相關知識點
1 對於mysql表中有乙個時間字段,要根據時間字段計算,在某一時間段中,該表中的所有記錄。例子如下 在t druid info表中,ctime是時間字段,查詢t druid info表中,七月份接入的,並且執行著的任務總數,sql語句如下 select count from t druid inf...
mysql索引優化知識點
想要了解索引的優化方式,必須要對索引的底層原理有所了解 索引的用處 索引的分類 面試技術名詞 索引採用的資料結構 索引匹配方式 create table staffs id int primary key auto increment,name varchar 24 not null default...