我对性能有疑问,我想我做错了什么。
我有一个表有项目,另一个表有类别,任何项目都可以在多个类别中。现在我想显示所有不包含在任何类别中的项目。
连接在表 Items_Categories
中(仅包含 ID_item
和 ID_category
)
我做了这个查询:
SELECT *
FROM Items AS i
WHERE ID_item NOT
IN (
SELECT DISTINCT ID_item
FROM Items_Categories
)
它可以工作,但是速度很慢。这需要几秒钟,而且我的数据库并没有那么大。我有大约 3000 个项目,可能有 200 个类别。
有更好的解决方案吗?
最佳答案
您可能可以改用 JOIN 并找到没有任何匹配的那些。
SELECT i.*
FROM items i
LEFT JOIN Items_Categories ic
ON i.ID_item = ic.ID_Item
WHERE
ic.ID_Item IS NULL
关于PHP "Simple"查询需要大量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075589/