![]() |
1
4
与所有DBMS优化问题一样,这取决于您的执行引擎。 我将从最简单的场景开始,每个列上有四个单独的索引。
这将确保以您没有预料到的方式使用这些列的任何查询仍然可以正常运行(a)
任何一个好的执行引擎都会首先有效地选择基数最小的索引,从而减少结果集,然后在此基础上执行其他过滤器。 只有 如果您有性能问题,可以考虑使用不同的索引来改进它。您应该测试生产类型数据的性能,而不是您自己构建的任何测试数据库(除非它们反映了生产类型的属性)。 和 你掌握的数据。 你应该做什么。 如果您担心在生产环境中玩游戏(您应该担心),那么您应该使用类似的规范设置另一个环境,将生产数据复制到其中,然后在那里摆弄索引。 |
![]() |
2
3
这是一个选项,另一个是fieldx、fieldy、field1上的索引和field2上的索引(与第一个查询相同!)。现在也有两个索引,但第二个索引要小得多。第二个查询可以同时使用两个索引,较大的索引用于查询的AND部分,较小的索引用于field2的OR部分。MySQL现在应该足够聪明了。 解释会帮你的。 |
![]() |
user164863 · 我可以让这个mySQL查询更快吗? 7 年前 |
![]() |
Ronak Patel · mysql-无适当索引的长时间运行查询 7 年前 |
![]() |
Mohd Abdul Mujib · 检查上次查询中是否使用了缓冲区 7 年前 |
![]() |
Ronbear · 更改视图定义可以改进/降低两种不同的查询 7 年前 |
![]() |
Camilo · SQL-如何对15行的组求和并找到最大和 7 年前 |
![]() |
curiousgeorge · 在具有单独更新列的重复密钥更新批上插入 7 年前 |
![]() |
Oblomingo · 如何优化依赖于执行时间的T-SQL查询? 7 年前 |