some_other_column不是任何索引的一部分。primary_index_column是主键列;secondary_index_column有一个b树索引,基数为200 (根据MySQL)。以下是explain的结果:
mysql> explain select some_other_column from `table` order by primary_index_column limit要为第二个查询选择特定的执行计划?我不明白为什么它可以将<em
我有一个包含200k个条目的表,其中列为INT,我想创建一个索引来加快查询速度。这是我想要执行的查询:SELECT A,B,C,D,E FROM table WHERE A=23 and (B=45 or C=43)。我创建了以下索引:B、ACD、C、ABC。使用EXPLAIN命令,我发现MySQL选择索引ACD。因此,我不断地在表中填充更多的值,并且我意识到MySQL正在上面的索引之间切换(并不总是同一个索引)。由
他们给出的原因是,当按我的方式完成时,MySQL将尝试创建一个太大的临时表,而查询将失败。他们的解决方案在其他地方失败了,但这在这里并不重要。我非常小心地按列进行了选择,管理员自己告诉我,应该保留唯一的值(因此我假定是索引的),但是他们似乎没有对这些列进行索引。我的问题是--一般情况下,这样做的方式('small_table LEFT join large_table')是糟糕的做法,还是这样的查询可以通过适当的索引</em
category字段是相当分布的,但是对于这个查询,created_timestamp似乎是一个很好的索引选择。
但是,MySQL没有使用created_timestamp索引,而是需要4秒才能返回。如果我强制MySQL使用created_timestamp索引使用USE INDEX (created_timestamp),它将以40 in返回。我检查了explain命令的输出,以了解发生这种情况的原因,发现MySQL</em