编辑: 所以这是我使用查询:优化MySQL查询与IN子句为10000条记录
SELECT *
FROM contacts
WHERE id in
(
SELECT DISTINCT contacts.id
from contacts INNER
JOIN contacts2tags ON contacts.id = contacts2tags.contactid
WHERE (tagid in (178)))
它运行很慢。建议优化它? 我已经添加了索引,但它仍然需要改进!
联系人表包含id,first_name,last_name,..and 标签表包含id,name。 contacts2tags表中包含的ContactID和标签识别哪些是相同contacts.id和tags.id分别 说明:
请看看:optimise mysql query with LIKE operator for 10k records
这是愚蠢的我张贴的一部分在这里查询。对不起:P
你可以把创建语法表格联系人和联系人标签以及查询中的解释。既然你使用了会有一个文件夹和临时表。所以,这也取决于你的服务器容量。 –
我希望你有一个关于c.id和t.tagid索引的索引,在这种情况下,我希望MySQL能够找到contacts2tags表上的记录,然后将这些记录与联系人联系起来。如果在t.tagid上没有索引,而是在t.contactid上有一个索引,则它必须在一个或另一个表上执行非键控搜索,具体取决于它首先使用哪个索引。 – Kickstart
谢谢。我确实在索引编号和编号 – user415