mysql里的where条件顺序对使用索引是否有影响
大家讲道理
大家讲道理 2017-04-17 11:43:39
0
7
664

比如user表有ab连个字段,而且都做了索引,那么我构建查询语句

SELECT * FROM user WHERE a = 1 AND b = 2

SELECT * FROM user WHERE b = 2 AND a = 1

如果满足a条件行数远大于满足b的,是否调整它们的顺序会产生区别?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(7)
伊谢尔伦

mysql 的 and 是同時滿足的,並不區分誰滿足的多,誰滿足的少 .

洪涛

可能會有影響,具體情況可以用explain看下

左手右手慢动作
  1. 如果經常有這種查詢, 建議建個ab的聯合索引,是最有效的最佳化。
    缺點是,新建索引會增加佔用的空間,降低插入速度
  2. 不建聯合索引,兩列又都有索引時,mysql會有採取自己的演算法去選區最快點索引,
    如果你很清楚,從a還是b查起來更快, 可以使用強制索引FORCE INDEX (FIELD1)
  3. 多用 explain去觀察, 最佳化你的sql
Ty80

你說的這種情況,AND前後條件順序不影響查詢的效率,就是沒有區別的;既然這兩個字段都是查詢條件,可以建立一個聯合索引以提高查詢效率

大家讲道理

我記得以前的公司有個業務也是涉及到這個點,當時做實驗的結果是mysql的查詢是從右往左的,現在的話,應該優化了這個點,具體沒有做過實驗

小葫芦

和寫的順序沒有關係。
若建聯後索引的話,聯合索引中欄位的段序是會影響查詢效率的。基本原則是區分度大的欄位放在前面。 (測試了一下索引的順序很重要)

左手右手慢动作

如果mysql的查詢規劃連這都做不到的話,mysql早就去死了

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板