问候,
我正在寻找一个包含几百万行的“大...”表,为简单起见,该表看起来像这样
create table data (
user_id int ...
created_on datetime ...
...
key (user_id),
key (created_on)
...
) engine = InnoDB;
所以,在查询中... SELECT * FROM data WHERE user_id = X and created_on = Y
查询优化器更喜欢created_on而不是user_id,现在我可以使用FORCE INDEX来“强制”解决问题,但我不想为每个Data.find和我们拥有的每个其他查询做到这一点(数百个)变化)。
我可以在可能的情况下影响Rails 2.3.5全局使用“数据FORCE INDEX(user_id_index)”(并且没有其他矛盾;即......手动输入另一个FORCE索引)
或
我可以更改mysql查询优化器更喜欢索引的方式吗?我看过运行分析表数据;但查询计划不会改变。
-daniel
答案 0 :(得分:1)
创建复合索引user_id + created_on
而不只是user_id
,一切都会好的。