作者fsz570 (570)
看板Database
标题Re: [SQL ]SUB QUERY的速度改善 / GROUP BY 的问题
时间Sat Sep 12 23:01:42 2009
※ 引述《george755185 (觉悟者恒幸福)》之铭言:
: 这是一个假设的栏位: (设名称是test)
: GroupNo | x | y | Date
: ---------------------------
: 今天我想依GroupNo分类,将各类下Date最大的x,y资料取出
: 我用的语法是:
: SELECT GroupNo, x, y, Date
: FROM test
: WHERE (
: GroupNo, Date
: )
: IN (
: SELECT GroupNo, MAX( Date )
: FROM test
: GROUP BY GroupNo
: )
: 可以达到我要的效果
: 但是在资料量大(2000笔以上)的时候,速度太慢无法符合需求 ~"~
: 有什麽方法可以改善这个查询的效率吗?
: 或是在使用 MAX...GROUP BY ....的时候,能不能将这个MAX列的其他栏位一并取出来?
如果你是用 Oracle,可以试试看下列的 SQL 会不会好一点
SELECT *
FROM (SELECT GROUPNO, X, Y,
ADATE,
MAX(ADATE) OVER (PARTITION BY GROUPNO) AS MAX_ADATE
FROM TEST ) A
WHERE ADATE = MAX_ADATE
不过你说资料笔数大於 2000 笔就会速度太慢这件事让我觉得你用的应该不会是 Oracle
也许你该考虑ㄧ下加个 index ( GROUPNO, DATE ), 这样也许会有帮助
p.s 版规不是写了说要说明是哪家的资料库吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.106.148
1F:推 george755185:抱歉忘了加上讯息... 我用的是MySQL 09/13 02:44