Mysql索引,我可以添加多少?

时间:2010-06-29 08:04:18

标签: mysql indexing

我有id, member_id, topic_id个字段。有时我在id子句中使用member_id,有时topic_id,有时WHERE。我可以为所有这些添加索引吗?它会变慢吗?我是MYSQL优化的新手,谢谢。

2 个答案:

答案 0 :(得分:4)

未使用的索引不会使SELECT变慢,但是您添加的每个索引都会降低INSERT和UPDATE的速度。

MyISAM表可以拥有的最大索引数为64

答案 1 :(得分:2)

通常,如果您只在单个字段上过滤查询,则需要在每个字段上使用单独的索引,例如在以下情况中:

SELECT * FROM your_table WHERE id = ?;
SELECT * FROM your_table WHERE member_id = ?;
SELECT * FROM your_table WHERE topic_id = ?;

如果id字段是主键,则可能已使用clustered index。因此,您似乎可以尝试在member_idtopic_id上创建两个单独的non-clustered indexes

CREATE INDEX ix_your_table_member_id ON your_table (member_id);
CREATE INDEX ix_your_table_topic_id ON your_table (topic_id);

您可能也有兴趣研究covering indexes的主题。