我有四个表(但我只会查询其中三个):
文章(文章是“项目”,类型 6):*a_id、a_title、a_text*
关键字(如果关键字是文章,则其类型为 6):*kw_id, kw_type*
关键字 _翻译 *kw_id, language_id, kw_name*
conn_Item_Keyword(item和keywords之间的多对多连接表):*kw_id, kw_type, item_id*
假设我要查询一篇 ID 为 15 的英文文章的所有关键词(language_id = 1)。
我可以这样写:
SELECT * FROM Conn_Item_Keyword c
LEFT JOIN Keywords k ON (c.kw_id = k.kw_id)
LEFT JOIN Keywords_Translation tr ON (c.kw_id = tr.kw_id)
WHERE c.kw_type = 6 AND c.item_id = 15 AND tr.language_id = 1
但在我看来它很慢,因为它将关键字连接到 Conn_Item_Keyword 的所有行。我在连接中尝试了多个条件(c.kw_id = k.kw_id AND c.kw_type = 6 AND c.item_id = 15),但我无法正确理解。
编写此查询的最佳方法是什么?