sql查詢語句用top和order by哪個效率高

2025-03-03 06:15:21 字數 2488 閱讀 6465

1樓:匿名使用者

如果有索引和沒索引的結果是不一樣的~~有索引的兩個效率差不多,max會優化過頭直接top 1後再流聚合!沒時max要高點!缺衝。

select top 1000 id=identity(int,1,1), into #t from syscolumns a,syscolumns b

drop table #t

select * from #t

無索引情況。

set statistics io on

select top 1 id from #t order by id desc

select max( id) from #t

set statistics io off

所影響的行數為 1 行)

表 '叢扮遊#t___00000000001d'。掃瞄計數 1,邏輯讀 5 次,物理讀 0 次,滲銷預讀 0 次。

所影響的行數為 1 行)

表 '#t___00000000001d'。掃瞄計數 1,邏輯讀 5 次,物理讀 0 次,預讀 0 次。

有索引情況。

create index idx_id on #t(id)

set statistics io on

select top 1 id from #t order by id desc

select max( id) from #t

set statistics io off

所影響的行數為 1 行)

表 '#t___00000000001d'。掃瞄計數 1,邏輯讀 2 次,物理讀 0 次,預讀 0 次。

所影響的行數為 1 行)

表 '#t___00000000001d'。掃瞄計數 1,邏輯讀 2 次,物理讀 0 次,預讀 0 次。

2樓:網友

如果有索引和沒索引的結果是不一樣的~~有索引的兩個效率差不多,max會優化過頭直接top 1後再流聚合!沒時max要高點!

select top 1000 id=identity(int,1,1), into #t from syscolumns a,syscolumns b

drop table #t

select * from #t

無索引情況。

set statistics io on

select top 1 id from #t order by id desc

select max( id) from #t

set statistics io off

(所影響的行數為 1 行)

表 '#t___00000000001d'。掃瞄計數 1,邏輯讀 5 次,物理讀 0 次,預讀 0 次。

所影響的行數為 1 行)

表 '#t___00000000001d'。掃瞄計數 1,邏輯讀 5 次,物理讀 0 次,預讀 0 次。

--有索引情況。

create index idx_id on #t(id)

set statistics io on

select top 1 id from #t order by id desc

select max( id) from #t

set statistics io off

(所影響的行數為 1 行)

表 '#t___00000000001d'。掃瞄計數 1,邏輯讀 2 次,物理讀 0 次,預讀 0 次。

所影響的行數為 1 行)

表 '#t___00000000001d'。掃瞄計數 1,邏輯讀 2 次,物理讀 0 次,預讀 0 次。*/

3樓:

兩個要同時用。

select top 1 id from [tablename] order by id desc

如果只用order by的話,效率肯定不高,因為io開銷太大。

sql語句中order by的效率怎麼樣?

4樓:

區區1000條 對 orderby的效率簡直就是小菜。

一般id是自增欄位,你 用公升序 或是降序 效率是差不多的,sql伺服器的排序演算法很智慧型,正向反向效能不相上下。

除非 你那個是區域性有序,區域性亂序 盤體也複雜可能有很大區別。

但是不用排序肯定快是一定的。

到時你用如下方式執行一下看看就行了!自己比對,比誰說的都好使!

set statistics profile onset statistics io on

set statistics time ongoselect * from [student] where [school] = '四平中學' order by [id]

goset statistics profile offset statistics io offset statistics time off

5樓:龍天騎士

一般的計算機 處理10w條一下資料 排序是不影響功能的~1000條 基本可以無視掉。

用sql語句建表和設定約束,C 如何使用SQL語句來建表,新增字段

val first numbers 0 讀取第乙個元素 create table 選課及成績表 課程號 varchar 20 check 課程號 like a z a z 0 9 0 9 0 9 0 9 學號 varchar 20 constraint pk pr primary key 課程號,學...

用sql語句查詢男學生的學號姓名,年齡

select 列名 學號 列名 姓名 列名 年齡 from table name where 列名 性別 男性 select id,name,age from student where 男 求解sql。設有學生表s 學號,姓名,性別,年齡 查詢所有年齡小於等於20歲的男同學。並按年齡生成新列 你好...

用SQL語句查詢每個學生選修的課程名及其成績

select 姓名,課程名,成績 from 課程名所在的表名 c join 成績所在的表名 s on c.課程號 s.課程號 join 學生資訊表 on s.學號 學生資訊表.學號 具體的例子 select sname,ame,grade from student st left join scor...