那么,是否还有其他人在MySQL中应用了覆盖索引并提高了性能,但是当您运行explain时,它会使用where显示,在额外列下使用临时的吗?有什么想法吗?为什么会这样?我对性能的提高感到高兴,但是我的工程师想知道为什么额外的一栏没有说“使用索引”。如果你需要我提供细节,我会的,但这个问题是针对专家谁已经在MySQL经验,并知道原因。我要补充的是,在我的特殊情况下,我将覆盖索引应用于update语句。查询中的所有列都包含在复合(覆盖)索引中。下面是我所做的事情的一个例子:
表A具有以下属性: 25,000行。
有以下列:1、2、3、4、5、6、7、8和9。
我的覆盖索引查询目标:
更新表A集一组=“somevalue”,2=“Som估价2”,四组=“somevalue4 3”,5=“somevalue6”,其中7= 'somevalue5‘和8= 'somevalue6’。
表A的覆盖指数:idx_covering(7、8、1、2、4、5)
发布于 2020-07-26 00:40:43
索引的顺序很重要。
您的更新查询使用seven和eight。这个指数的最左边一定是最开始的。因为两者都使用基于= value的标准,而顺序并不重要。
create index udx_78 on A (seven, eigth)将更新的列放入索引中无助于更新查询。如果是select查询,则查询将从索引中返回这些列。
欢迎来到DBA堆栈交换。请将下一次的explain输出与show create table {tablename}一起包括在内,因为它能更快地传递信息。
https://dba.stackexchange.com/questions/271661
复制相似问题