聯合索引

聯合索引

聯合索引是多個字段上建立的索引,能夠加速複覈查詢條件的檢索。

舉例,登錄業務需求:

select uid, login_time from t_user where 

login_name=? and passwd=?

可以建立(login_name, passwd)的聯合索引。

聯合索引能夠滿足最左側查詢需求,例如(a, b, c)三列的聯合索引,能夠加速a | (a, b) | (a, b, c) 三組查詢需求。

這也就是爲何不建立(passwd, login_name)這樣聯合索引的原因,業務上幾乎沒有passwd的單條件查詢需求,而有很多login_name的單條件查詢需求。

SQL語句裏,where條件中的and前後的順序,是否會影響索引的命中?
不會

舉個例子:

select uid, login_time from t_user where

passwd=? and login_name=?

能否命中(login_name, passwd)這個聯合索引?
可以,最左側查詢需求,並不是指SQL語句的寫法必須滿足索引的順序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章