我有一个这样的查询(实际上,它是复杂查询的一部分。然而,我提取它只是为了显示我所遇到的问题)
SELECT
bar.foo, count(1)
FROM
bar
WHERE
bar.baz in ("1", "2", "3", "4", "5")
GROUP BY
bar.foo;这个查询的问题是它是“使用临时的;使用文件排序的”
我有一个关于bar.baz的索引。然而,由于IN运算符,它看起来没有帮助。
在这种情况下,我在几个地方看到建议使用简单的where语句(bar.baz = 1)将其分解为多个查询,并使用连接。但是,它不适用于我,因为这些"1“、"2”等实际上是由子查询返回的。
我是古瑞斯。这里有没有避免文件排序的方法?
发布于 2015-02-08 14:03:15
我在下面的链接中找到了这个技巧:
SELECT
bar.foo, count(1)
FROM
bar
WHERE
bar.baz in ("1", "2", "3", "4", "5")
GROUP BY
bar.foo
ORDER BY NULL;http://dev.housetrip.com/2013/04/19/mysql-order-by-null/
https://stackoverflow.com/questions/28390930
复制相似问题