mysql 查看索引命中_请问下如何在Mysql中where与orderBy后在命中索引?
我現在大概有一個需求,是需要在數據庫中查詢一個列表。數據表的樣子大概是這樣的:
A
B
C
D
E
1
1
1
2016-08-05
40
...
...
...
...
...
而我現在的SQL語句大概是這樣的
SELECT * FROM `TABLE` WHERE B = 1 AND C = 1 AND D = 2016-08-05 ORDER BY E DESC
在這種情況下我應該怎么建立索引才能在查詢的時候命中呢?建立index(['B', 'C', 'D', 'E'])的復合索引可以么?
回復內容:
我現在大概有一個需求,是需要在數據庫中查詢一個列表。數據表的樣子大概是這樣的:
A
B
C
D
E
1
1
1
2016-08-05
40
...
...
...
...
...
而我現在的SQL語句大概是這樣的
SELECT * FROM `TABLE` WHERE B = 1 AND C = 1 AND D = 2016-08-05 ORDER BY E DESC
在這種情況下我應該怎么建立索引才能在查詢的時候命中呢?建立index(['B', 'C', 'D', 'E'])的復合索引可以么?
理論上是可以這么建的,因為索引的左前綴原則,會依次命中B,C,D三個字段,但是很遺憾,E字段只用來排序的話是無法觸發索引的。
因為當order by 字段出現在where條件中時,才會利用索引而無需排序操作。其他情況,order by不會出現排序操作。
具體可以看這篇文章,分析orderby 和索引的關系
http://www.cnblogs.com/zhaoyl...
mysql 強制指定索引 FORCE INDEX
SELECT * FROM TABLE1 FORCE INDEX (FIELD1) …
以上的SQL語句只使用建立在FIELD1上的索引,而不使用其它字段上的索引。
本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴
本文系統來源:php中文網
總結
以上是生活随笔為你收集整理的mysql 查看索引命中_请问下如何在Mysql中where与orderBy后在命中索引?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 廖雪峰讲python高阶函数求导公式_高
- 下一篇: 计算机在管理会计应用中的作用,信息化在管