为什么MySQL不能一致地优化WHERE <indexed_field> IN (<subquery>)格式的查询SELECTFROMWHERE子查询select val from ...运行得非常快。问题是MySQL正在执行一个full table scan,以便从t1中获取所需的行--即使t1.indexed_field已经建立了索引。我已经通过将查询更改为内部连接来解决此问题:
SEL
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要为第二个查询选择特定的执行计划?我不明白为什么它可以将索引用于第一个查
示例- SELECT * FROM table_name FORCE INDEX (index_list) WHERE condition;
在不使用强制索引的情况下,mysql的查询优化器决定可以在给定查询中使用的索引的最佳候选者但是,如果它发现它仍然必须扫描大部分行,那么它将跳过索引,继续进行完全扫描。因此,它可能使用也可能不使用任何索引。因此,假设查询优化器有一个更好的索引候选,它可以使用