2011-02-10 23 views
2

问候,Rails 2.3.5/MySQL关键首选项问题;力指数

我正在寻找一个相当“大......”表了几百万行,并且为简化起见表看起来像这样

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 over user_id,现在我可以使用FORCE INDEX来“强制”这个问题,但我不想必须为每个Data.find和我们所有的其他查询(数百次更改)做到这一点。

能否影响的Rails 2.3.5全局地使用 “数据FORCE INDEX(user_id_index)” 在可能的情况(并且没有其他的矛盾,即..另一个FORCE索引手动输入)

我可以改变mysql查询优化器如何更偏好手工索引的方式?我看过运行分析表数据;但查询计划不会更改。

-daniel

+1

没有主键?可怜的浪费你的唯一innodb聚集索引。 – 2011-02-11 00:15:22

+0

@ f00:另外还有一个补充:如果PK单调增长,它在innodb中会更好 – zerkms 2011-02-11 00:58:26

回答

1

创建综合指数user_id + created_on,而不是仅仅user_id,一切都会好起来的。