首先,我不得不说这个话题是非常普遍的话题。我研究了所有相关主题,但找不到答案。我有三张桌子。Messages 表有 300.000 行,tags 表有 100 万行,message_tag 表有大约 1000 万行。message_tag.message_id 和 message_tag.tag_id 列有索引。我的目的是选择链接指定标签的消息。但是查询时间太长了。没有任何查询时间短于 20 秒。另一方面,由于查询时间长,有时查询甚至没有给出结果。表结构和我的查询如下。我该如何处理这个问题?我开放所有建议。即使我可以使用新架构重新创建表。数据库是 MySql,存储电机是 MyIsam。.
table name: messages
columns :
id (int)
message (vharchar)
message_poster (vharchar)
table name: tags
id (int)
tag (vharchar)
table name : message_tag
columns :
message_id (int)
tag_id (int)
我的查询:
SELECT messages.message_poster,
messages.message
FROM tags, messages, message_tag
WHERE message_tag.tag_id=191
AND messages.id= message_tag.message_id