日期:2014-05-17  浏览次数:20403 次

SQL语句性能方面的问题
两个sql,很简单的语法
高手帮看看两个哪个更快,为什么

thx~
SELECT T1.*,T2.A2 AS A3 FROM qqqqqqqqqqqqqq T1
LEFT JOIN (SELECT MIN(A1) AS A1,A2 FROM qqqqqqqqqqqqqq T1
GROUP BY A2)T2 ON T2.A1=T1.A1



SELECT T1.*,T2.A2 AS A3 FROM qqqqqqqqqqqqqq T1
LEFT JOIN (SELECT A1,A2 FROM
(SELECT *,ROW_NUMBER() OVER (PARTITION BY A2 ORDER BY A1) AS 'RowNumber'
FROM qqqqqqqqqqqqqq)RR
WHERE RR.ROWNUMBER=1)T2 ON T2.A1=T1.A1

------解决方案--------------------
试下以下语句的性能


SELECT T1.*
,case when not exists (
  select 1
  from qqqqqqqqqqqqqq T2
  where T2.A1<T1.A1
  and T2.A2 = T1.A2
  ) then T2.A2 else NULL end AS A3 
FROM qqqqqqqqqqqqqq T1 

------解决方案--------------------
你把两个语句放在一个查询窗口中,然后按ctrl+L,看看哪个占百分比小哪个就快