我有id, member_id, topic_id
个字段。有时我在id
子句中使用member_id
,有时topic_id
,有时WHERE
。我可以为所有这些添加索引吗?它会变慢吗?我是MYSQL优化的新手,谢谢。
答案 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_id
和topic_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的主题。