示例- SELECT * FROM table_name FORCE INDEX (index_list) WHERE condition;
在不使用强制索引的情况下,mysql的查询优化器决定可以在给定查询中使用的索引的最佳候选者但是,如果它发现它仍然必须扫描大部分行,那么它将跳过索引,继续进行完全扫描。因此,它可能使用也可能不使用任何索引。因此,假设查询优化器有一个更好的索引候选,它可以使用(甚至没有任何索引)来更快地计算查询。但是通过
然而,经过几次反复的解释,MySQL最终决定使用索引。问题是,这个表有数百万行,而inserts和selects以每秒几次的速度命中它。我通过强制索引修复了这个问题,所以它看起来像这样:
SELECT field1 from TABLE1 FORCE INDEX (index1) WHERE field2_id = 12345 and我的问题是,为什么MySQL选择了错误的索引?除了在所有查询上强制索引之外,还可以做些什么来修复它吗?分区会让Inno