我有以下SQL:
SELECT customfieldvalue.ISSUE
FROM customfieldvalue
WHERE customfieldvalue.STRINGVALUE
IN (SELECT customfieldvalue.STRINGVALUE
FROM customfieldvalue
WHERE customfieldvalue.CUSTOMFIELD = "10670"
GROUP BY customfieldvalue.STRINGVALUE
HAVING COUNT(*) > 1);
内部嵌套选择在MySQL 5.0.77上以1.5秒的形式返回3265行,当它自己运行时。 customfieldvalue表包含2286831行。
我想返回ISSUE列的所有值,其中STRINGISSUE列值不是该行的唯一值,而CUSTOMFIELD列包含“10670”。
当我尝试运行上面的查询时,MySQL似乎陷入困境。我已经把它运行了一分钟,但我很确定问题是我的问题。
答案 0 :(得分:0)
尝试以下几点:
SELECT cfv1.ISSUE
COUNT(cfv2.STRINGVALUE) as indicator
FROM customfieldvalue cfv1
INNER JOIN customfieldvalue cfv2
ON cfv1.STRINGVALUE = cfv2.STRINGVALUE AND cfv2.CUSTOMFIELD = "10670"
GROUP BY cfv1.ISSUE
HAVING indicator > 1
这可能不适用于复制和粘贴,因为我还没有验证它,但在MySQL中JOIN 经常比子查询快得多,甚至数量级。