一、爲什麼要使用索引?
使用索引查找數據,能夠避免全表掃描,提升查找效率。
二、什麼樣的信息能成爲索引?
主鍵、唯一鍵等能讓數據具備一定區別性的字段
三、索引的數據結構?
主流:B+ tree,小衆:hash bitMap(oracle)
四、密集索引和稀疏索引的區別?
密集索引:每個搜索碼值都對應一個索引值(索引跟數據一同存儲)
稀疏索引:只爲某些搜索碼值對應索引值(索引跟數據分開存儲)
五、mysql慢查詢,處理sql語句執行速度慢問題
六、聯合索引最左匹配原則
最左前綴匹配原則,非常重要的原則, mysql會一直向右匹配直到遇到範圍查詢(>、<、between, like)就停止匹配,比如a =3 and b=4 and c> 5 and d=6如果建立(a,b,c,d)順序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引則都可以用到, a,b,d的順序可以任意調整。
=和in可以亂序,比如a =1 and b=2 and c=3建立(a,b,c)索引可以任意順序, mysql的查詢優化器會幫你優化成索引可以識別的形式。
七、MyISAM與InooDB
MyISAM:表鎖,聚集索引、(查詢高,沒有事物,count(*))
InooDB:行鎖(默認)、表鎖,非聚集索引、(增刪改查頻繁、可靠性高、支持事物)