Sql server 在SQLServer2005中,如何在不使用ORDERBY子句的情况下按降序获取最后的记录?
我正在使用sql server 2005。我有一个表,其中包含超过20万条记录。我想按降序显示最后10条记录。我使用这个查询来获取记录Sql server 在SQLServer2005中,如何在不使用ORDERBY子句的情况下按降序获取最后的记录?,sql-server,Sql Server,我正在使用sql server 2005。我有一个表,其中包含超过20万条记录。我想按降序显示最后10条记录。我使用这个查询来获取记录 select * from course as where courseid not in (select top ((select count(*) from course) - 3 ) courseid from course ) order by courseid desc 但我的dba要求在不使用ORDERBY子句的情况下对记录进行排序
select * from course as
where courseid not in (select top ((select count(*) from course) - 3 ) courseid
from course ) order by courseid desc
但我的dba要求在不使用ORDERBY子句的情况下对记录进行排序……这可能吗?我是SQLServer2005的新手。如何做到这一点?如果不显式使用排序依据,就不可能可靠地获得排序结果
资料来源:
如果不明确使用排序依据
,就不可能可靠地获得排序结果
资料来源:
要按降序获取最后10条记录,只需使用
SELECT TOP 10 *
FROM course
ORDER BY courseid DESC
也许您误解了DBA的投诉?他们可能是因为您当前的查询而抱怨
执行200000行的完整表扫描以获取计数
然后进行另一次扫描,以获取最上面的199997 ID
并将其用于反半联接,以对另一个200000行的完整扫描进行比较
因此,这意味着您的查询处理的行数比看起来需要的多60000倍
要按降序获取最后10条记录,只需使用
SELECT TOP 10 *
FROM course
ORDER BY courseid DESC
也许您误解了DBA的投诉?他们可能是因为您当前的查询而抱怨
执行200000行的完整表扫描以获取计数
然后进行另一次扫描,以获取最上面的199997 ID
并将其用于反半联接,以对另一个200000行的完整扫描进行比较
因此,这意味着您的查询处理的行数比看起来需要的多60000倍
你会惊讶于有多少人不记得“lakh”是什么意思。请翻译成英语。请检查[1]。[1] :210万(200000)=>200000(二十万)。为什么您的dba要求您不要使用ORDERBY子句?这就像让某人不用方向盘驾驶一辆车,你会惊讶地发现有多少人不记得“lakh”是什么意思。请翻译成英语。请检查[1]。[1] :210万(200000)=>200000(二十万)。为什么您的dba要求您不要使用ORDERBY子句?这就像让某人不用方向盘驾驶一辆车;修正了“披头士对石头”的链接。这是一个更好/更简单的例子,因为它可以被任何人重复;修正了“披头士对石头”的链接。这是一个更好/更简单的例子,因为它可以被任何人重复。