Sql 选择列的最大值和该行的相应数据的最有效方法

Sql 选择列的最大值和该行的相应数据的最有效方法,sql,sql-server,performance,Sql,Sql Server,Performance,作为起点,我有以下问题。我知道它可以工作并产生我想要的结果,但它能否以更快/更高效的方式完成,因为它可能会处理大量数据以找到我想要返回的内容 (下例中的ID是一个自动递增的PK字段) 我喜欢为此使用CTE,因为您可以对源表和CTE进行内部连接 ;WITH LookupCTE AS ( select id = MAX(id) FROM table WHERE z = someValue ) SELECT x, y, x from table t1 INNER join

作为起点,我有以下问题。我知道它可以工作并产生我想要的结果,但它能否以更快/更高效的方式完成,因为它可能会处理大量数据以找到我想要返回的内容

(下例中的ID是一个自动递增的PK字段)


我喜欢为此使用CTE,因为您可以对源表和CTE进行
内部连接

;WITH LookupCTE AS 
(
    select id = MAX(id) 
    FROM table 
    WHERE z = someValue
)
SELECT x, y, x
from table t1
INNER join LookupCTE t2 ON t1.id = t2.id

我喜欢为此使用CTE,因为您可以对源表和CTE进行
内部连接

;WITH LookupCTE AS 
(
    select id = MAX(id) 
    FROM table 
    WHERE z = someValue
)
SELECT x, y, x
from table t1
INNER join LookupCTE t2 ON t1.id = t2.id
我建议:

select top (1) x, y, x
from table
where z = somevalue
order by id desc;
对于性能,您需要在
(z,id)

上建立索引。我建议:

select top (1) x, y, x
from table
where z = somevalue
order by id desc;
为了提高性能,您需要在
(z,id)
上建立索引