![]() |
1
28
是的,至少有一种情况要慢得多。如果只定义以下索引:
…然后查询
使用组合键创建索引时,键的列顺序非常重要。建议尝试对键中的列进行排序以增强选择性,其中最有选择的列位于键的最左侧。如果不这样做,并将非选择性列作为键的第一部分,则可能根本不使用索引。(来源: Tips on Optimizing SQL Server Composite Index ) |
![]() |
2
22
仅仅存在一个指数就很难减缓
理论上,优化器可以错误地选择更长的索引
实际上,我从未见过:
更新: 在您的情况下,以下任一配置都足以满足所有查询:
或
还将使用
您也可以在我的博客中阅读这篇文章: 更新2: 似乎我终于理解了你的问题:)
优秀的
优秀的
非常适合所有三个查询。 |
![]() |
3
4
SQL将选择最能覆盖查询的索引。 A、B上的索引将同时包含案例1和3的查询,但不包括2的查询(因为主索引列是A) 因此,要涵盖所有三个查询,需要两个索引:
|
![]() |
4
0
例如,您的索引集3是最佳的。MySQL将为单列WHERE子句选择单个A和B索引,并为A&B WHERE子句使用复合索引。 |
|
Johnny T · 基于当前值的SQL合并表[重复] 5 月前 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 6 月前 |
![]() |
ojek · 如何对SQL结果进行分组和编号? 6 月前 |
![]() |
senek · 如何在PL/SQL中将选择结果(列)放入数组中 6 月前 |
![]() |
Sax · 规范化Google表格(第一步) 6 月前 |
![]() |
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 6 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 6 月前 |