1
2
首先,分析慢SQL语句的正确且最简单的方法是进行解释。找出优化器是如何选择计划的,并思考为什么以及如何改进计划。我建议只使用两个单独的索引来研究解释结果,以了解MySQL如何执行您的语句。 我对MySQL不是很熟悉,但是MySQL4似乎有一个限制,即查询中每个表只能使用一个索引。自MySQL5以来,这方面似乎有所改进。( index merge 但我不确定这是否适用于你的案件。再说一遍,解释应该告诉你真相。 即使每个表允许使用2个索引(MySQL5),使用2个单独的索引通常比复合索引慢。与使用复合索引的单一过程相比,使用两个单独的索引需要索引合并步骤。 Multi Column indexes vs Index Merge 可能会有所帮助,使用MySQL5.4.2。 |
2
1
决定优化器是否使用索引的不是索引的大小,而是选择性。 |
3
0
我的猜测是,它将使用索引,然后它可能使用传统的查找移动到另一个索引,然后过滤掉。请检查执行计划。所以简而言之,您可能在嵌套循环中循环访问两个索引。根据我的理解。我们应该尝试对筛选或联接中的列创建一个复合索引,然后对选择中的列使用include子句。我从未在MySQL中工作过,所以我的理解基于SQL Server 2005。 |
hello_programmers · Mysql从其他表输出一列 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
Kugelfisch · 用php为数据库加密数据 1 年前 |