我想提高以下查询的性能。使用带IN子句的嵌套子查询提高MySQL查询的性能
SELECT DISTINCT StringId
FROM translations
WHERE status = 1
AND TranslationId IN
(
SELECT Max(TranslationId)
FROM translations
WHERE languageId = 2
AND TranslationId > 0
GROUP BY StringId;
此查询当前需要永久因为In子句。
下面的子查询
SELECT Max(TranslationId)
FROM translations
WHERE languageId = 2
AND TranslationId > 0
GROUP BY StringId;
收益16,000行,并与16,000行子句什么是这么长时间。
,我想出了一个改进的查询是
SELECT DISTINCT t1.StringId
FROM translations t1
INNER JOIN
(
SELECT Max(TranslationId) MaxTranslationId,
StringId
FROM translations
WHERE languageId = 2
AND TranslationId > 0
GROUP BY StringId
) t2 ON t1.StringId = t2.StringId
AND t1.TranslationId = t2.MaxTranslationId
WHERE status = 1;
我希望内部联接将返回只喜欢只用在子句同时匹配的StringID和Max(TranslationId)的行。
如果这是一个正确的方法来处理,有人可以给我一个答案吗?
它是MySQL还是SQL Server?选一个。他们不一样。 – Siyual
@Siyual我说的标题中的MySQL :) – CoderSpinoza
@Mike感谢您的编辑:) – CoderSpinoza