1、select * from t where k between 3 and 5
執行幾次搜尋樹?會掃瞄多少行?
>
create
table t(
id int
primary
key,
k int
notnull
default0,
s varchar(16
)not
null
default'',
index k(k)
) engiine
>
insert
into t values
(100,1
,'aa'),
(101,2
,'ab'),
(102,3
,'ac'),
(103,4
,'ad'),
(104,5
'ad'),
(105,7
,'ad'
)
2、執行流程
在 k 索引樹上找到 k=3 的記錄,取得 id = 102;
再到 id 索引樹查到 id=102 對應的 資料;
在 k 索引樹取下乙個值 k=5,取得 id=104;
再回到 id 索引樹查到 id=104 對應的 資料;
在 k 索引樹取下乙個值 k=6,不滿足條件,迴圈結束。
回表:回到主鍵索引樹搜尋的過程1、select id from t where k between 3 and 5
需要查 id 的值, 而 id 的值已經在 k 索引樹上了,因此可以直接提供查詢結果,不需要回表。
由於覆蓋索引可以減少樹的搜尋次數,顯著提公升查詢效能,所以使用覆蓋索引是乙個常用的1、有乙個高頻請求,要根據市民的身份證號查詢他的姓名則麼做?效能優化手段。
建立乙個(身份證號、姓名)的聯合索引2、索引欄位的維護是有代價的,在建立冗餘索引來支援覆蓋索引時就需要權衡考慮。
1、b+ 樹索引結構,可以利用索引的「最左字首」,來定位記錄。
2、在建立聯合索引的時候,如何安排 索引內的字段順序。
第一原則是,如果通過調整順序,可以少維護乙個索引,那麼這個順序是需要優先考慮採用的。索引的復用能力
第二原則 考慮索引的空間使用3、例子 一建立了乙個聯合索引 (a,b)
查詢既有聯合查詢,又有基於a、b各自的查詢,無法使用(a,b)這個聯合索引。這時就需要維護單個索引。1、mysql 5.6 引入的索引下推優化(index condition pushdown), 可以在索引遍歷過程中,對索引中包含的字段先做判斷,直接過濾掉不滿足條件的記錄,減少回表次數。
2、例子 檢索出表中「名 字第乙個字是張,而且年齡是 10 歲的所有男孩」 聯合索引是(name,age)
語句
>
select
*from tuser where name like
'張%'
and age 10
and *** =
1
id
name
***age1張1
1302張2
1103張3
0204張4
010
innodb 在 (name,age)索引內部就判斷了age是否等於10,對於不等於10的記錄,直接判斷並跳過。減少了回表的次數。上表只需兩次回表 內部判斷會丟棄年齡為 30 和 20 的
mysql 05索引 個人筆記
1檢視表的所有索引 show index from tablename g 2普通索引的建立 2.1 語法create index index name on table name field name,asc desc create index i dogname on dog dogname a...
MySql 04 筆記 索引
1 為什麼需要索引?索引的出現是為了提高資料查詢的效率 1 雜湊表 雜湊表是一種以鍵 值 key value 儲存資料的結構,只要輸入待查詢的值即key,就可以找到其對應的值即 value。雜湊的思路 把值放在陣列裡,用乙個雜湊函式把key換算成乙個確定的位置,然後把value放在陣列的這個位置 雜...
MySQL 05 資料型別
型別 大小 位元組 用途tinyint 1小整數值 smallint 2大整數值 mediumint 3大整數值 int4 大整數值 bigint 8極大整數值 float 4單精度浮點數值 double 8雙精度浮點數值 decimal decimal m,d m d?m 2 d 2 小數值型別 ...