PHP "Simple"查询需要大量时间

标签 php mysql sql database

我对性能有疑问,我想我做错了什么。

我有一个表有项目,另一个表有类别,任何项目都可以在多个类别中。现在我想显示所有不包含在任何类别中的项目。

连接在表 Items_Categories 中(仅包含 ID_itemID_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/

相关文章:

php - 搜索用户 Laravel

php - Laravel Cashier paymentMethods() 总是返回空对象结果

php - HTML 到 CSV PHP

php - 作业类不接受从 laravel 中的 Controller 发送的参数

mysql - Laravel 5.1 迁移和播种无法截断外键约束中引用的表

php - 每次都得到相同的答案

php - MySQLi 查询连接多个具有纯关系表的表

mysql - 删除两个表中的行时的效率

sql - LEFT JOIN 匹配。如果没有匹配,需要在最近的日期匹配

sql - 优化sql查询