对于此查询:
SELECT * FROM dogs WHERE a = ? AND b = ? GROUP BY c
Run Code Online (Sandbox Code Playgroud)
哪个综合指数更好:
INDEX(a, b, c)
Run Code Online (Sandbox Code Playgroud)
或者
INDEX(c, a, b)
Run Code Online (Sandbox Code Playgroud)
您通常需要第一个索引
INDEX(a, b, c)
Run Code Online (Sandbox Code Playgroud)
或类似的
INDEX(b, a, c)
Run Code Online (Sandbox Code Playgroud)
这是因为随后可以查找a和列(仅读取确切的必要行),并且结果仍将按 排序,这意味着不需要支持排序。bcGROUP BY
而另一个选择
INDEX(c, a, b)
Run Code Online (Sandbox Code Playgroud)
意味着虽然数据可以按 排序c,但需要读取全部行并验证它们是否符合a和b条件。
如果您的 RDBMS 支持的话,您可能还想添加INCLUDE列,以便支持其余的SELECT列。
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |