sql語句根據特定條件改變排序及效率測試

2021-04-08 17:13:37 字數 1183 閱讀 6337

兩個解決方案:

select * from t_admin

order by case when admin_name = 'loo' then 0 else 1 end 

另外一種:

select *, 0 as tmp_o

from t_admin

where admin_name = 'loo'

union

select *, 1 as tmp_o

from t_admin

where admin_name <> 'loo'

order by tmp_o

現在來考慮一下兩條語句的效率問題

建立表:

create table [testtable] (

[id] [int] identity (1, 1) not null ,

[firstname] [nvarchar] (100) collate chinese_prc_ci_as null ,

[lastname] [nvarchar] (100) collate chinese_prc_ci_as null ,

[country] [nvarchar] (50) collate chinese_prc_ci_as null ,

[note] [nvarchar] (2000) collate chinese_prc_ci_as null

) on [primary]

go declare @i int

set @i=1

while @i<=20000

begin

insert into testtable([id], firstname, lastname, country,note) values(@i, 'firstname_***','lastname_***','country_***','note_***')

set @i=@i+1

end

set identity_insert testtable off

簡單的測試一下

如果不用top,所有資料都select出來的話兩個的成本大概都是在50%左右,case語句會更快那麼一點。

而同時輸出幾萬記錄的情況確實是太少了,加上top 10 結果就差非常的多。

union語句只需要0.38% 而 case語句竟然要99.26%。

特定SQL語句記錄

一些特定條件下的sql操作記錄,不定時新增。1.通過sql語句得到某張特定的表的主鍵 利用系統表information schema.key column usage 的方法 select column name from information schema.key column usage wh...

pb根據sql語句生成資料視窗

string ls sql,ls syntax,ls error ls sql mle 1.text ls syntax sqlca.syntaxfromsql ls sql,style type grid ls error if len ls error 0 then messagebox err...

根據時間段查詢的sql語句

實體類屬性 datetimeformat pattern yyyy mm dd hh mm ss apimodelproperty value 起始時間 private localdatetime starttime datetimeformat pattern yyyy mm dd hh mm s...

3 14 2 資料庫更新特定欄位SQL 語句塊

1.1適用於單條或者因為in條件1 1000條資料 下面是更改cms contract info 表中合同編號為cmcc987最後更新時間為當前時間,或者註釋裡特定時間。1 update cms contract info cci 2set cci.last update date sysdate3...

SQL刪除特定字元

請教sql刪除特定字元 sql語句為 update table name set field name replace field name from str to str 說明 table name 表的名字,field name 欄位名,from str 需要替換的字串,to str 替換成的字...