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...