这是我的表:如何避免子查询?
ID KEY VALUE
1 alpha 100
2 alpha 500
3 alpha 22
4 beta 60
5 beta 10
我想检索所有KEY
-s他们最新值的列表(其中ID
是其最大):
ID KEY VALUE
3 alpha 22
5 beta 10
在MySQL我正在使用这个查询,这是无效的:
SELECT temp.* FROM
(SELECT * FROM t ORDER BY id DESC) AS temp
GROUP BY key
是否有可能在这种情况下避免子查询?
MySQL将创建** **许多临时表,而在我的例子中有将只有一个。你确定你的SQL更快吗? – yegor256 2010-10-26 06:51:38
我没有运行MySQL,但试用两个版本并比较两个计划以确定最佳解决方案应该不难。只使用5个ID的SQL Server,这两种解决方案的执行速度同样快。使用13个ID,LEFT JOIN解决方案占55%,INNER JOIN解决方案占45%。当你的表增长时,你可以预期这种差异会变得更加明显。 *注意:ID列是主键,值列上有一个索引* – 2010-10-26 07:45:17
...应该读*“键列上有一个索引”* – 2010-10-26 07:57:47