Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 执行值存在性检查_Mysql_Performance - Fatal编程技术网

Mysql 执行值存在性检查

Mysql 执行值存在性检查,mysql,performance,Mysql,Performance,我对MySQL查询有一点性能问题,不知道如何正确构建它,所以它确实尽可能少地工作 问题: 假设一个表有两列:userint、itemint 用户具有与关联的不同项目。可能用户1有项目1、项目2、项目3,用户2有项目1、项目3、项目4 我想知道的是,对于一个特定的用户-X,如果至少有一个其他用户也有这些项目,那么每个项目都是独立的 我开始的是 SELECT item FROM table WHERE item IN (SELECT item FROM table WHERE user = X) A

我对MySQL查询有一点性能问题,不知道如何正确构建它,所以它确实尽可能少地工作

问题:

假设一个表有两列:userint、itemint

用户具有与关联的不同项目。可能用户1有项目1、项目2、项目3,用户2有项目1、项目3、项目4

我想知道的是,对于一个特定的用户-X,如果至少有一个其他用户也有这些项目,那么每个项目都是独立的

我开始的是

SELECT item
FROM table
WHERE item IN (SELECT item FROM table WHERE user = X) AND user != X
GROUP BY item
。。。但这是低效的,因为在这种情况下,查询搜索整个表并检查每个项目,即使每个项目都已找到。 我不能限制查询,因为我不知道user-X实际有多少项。 对于每个项目单独发送一个带有limti1的搜索查询也不是一个好主意

对于抽象,您还可以说我想知道一组item-X、…、item-Y不是顺序或连续编号是否与至少一个用户关联

我一点也不在乎物品的出现频率,只想知道是否至少出现一次

那么,如何才能做到这一点呢?
谢谢你的建议

这是一个简单的拥有,不是吗

给我用户x和至少一个其他用户都拥有的项目


你要找的是条款

如果提供的子查询中有任何匹配行,则其计算结果将为true

SELECT item
FROM table AS t1
WHERE user = X
  AND EXISTS ( SELECT * FROM table AS t2 WHERE user <> X AND t1.item = t2.item )
GROUP BY item
SELECT DISTINCT t1.item
    FROM table t1
        INNER JOIN table t2
            ON t1.item = t2.item
                AND t1.user <> t2.user
    WHERE t1.user = X
SELECT item
FROM table AS t1
WHERE user = X
  AND EXISTS ( SELECT * FROM table AS t2 WHERE user <> X AND t1.item = t2.item )
GROUP BY item