在日常工作中,要進行查詢sql 為了提高效率和時間
create database dbtest
use dbtest
--建立測試表
create table pagetest
(id int identity(1,1) not null,
col01 int null,
col02 nvarchar(50) null,
col03 datetime null
)--1萬記錄集
--寫法1,not in/top
select top 50 * from [crb_tpm].[dbo].[bo_dw_attvisitplan]
where id not in (
select top 78600 id from [crb_tpm].[dbo].[bo_dw_attvisitplan] order by id
)order by id
--耗時110毫秒
--寫法2,not exists
select top 50 * from [crb_tpm].[dbo].[bo_dw_attvisitplan] pagetest
where not exists
( select 1 from
(select top 786000 id from [crb_tpm].[dbo].[bo_dw_attvisitplan] order by id)a
where a.id=pagetest.id
)order by id
--耗時:453毫秒
--寫法3,max/top
select top 50 * from [crb_tpm].[dbo].[bo_dw_attvisitplan]
where id>(
select max(id) from (select top 786000 id from [crb_tpm].[dbo].[bo_dw_attvisitplan] order by id)a
)order by id
--耗時:313毫秒
--寫法4,row_number()
select top 50 * from
( select row_number()over(order by id)rownumber,* from [crb_tpm].[dbo].[bo_dw_attvisitplan]
)awhere rownumber>786000
--耗時:546毫秒
select * from
(select row_number()over(order by id)rownumber,* from [crb_tpm].[dbo].[bo_dw_attvisitplan])a
where rownumber>786000 and rownumber<786051
--耗時:530毫秒
select * from
(select row_number()over(order by id)rownumber,* from [crb_tpm].[dbo].[bo_dw_attvisitplan])a
where rownumber between 786000 and 786051
--耗時:500毫秒
--寫法5,在csdn上一帖子看到的,row_number() 變體,不基於已有字段產生記錄序號,先按條件篩選以及排好序,再在結果集上給一常量列用於產生記錄序號
select *
from (
select row_number()over(order by tempcolumn)rownumber,*
from (select top 786051 tempcolumn=0,* from [crb_tpm].[dbo].[bo_dw_attvisitplan] where 1=1 order by id)a
)bwhere rownumber>786000
耗時:300毫秒
Sql Server常用時間段查詢彙總
本文對應sql server 中常用的時間查詢的進行一些彙總,例如查詢當天的 本週的 本月的 本季度的,某個時間段內的時間。例項 我的 表名 mytable 欄位名 mydate 一 當天 某兩個時間段 select from mytable where datediff dd,mydate,get...
Sql Server常用時間段查詢彙總
本文對應sql server 中常用的時間查詢的進行一些彙總,例如查詢當天的 本週的 本月的 本季度的,某個時間段內的時間。例項 我的 表名 mytable 欄位名 mydate 一 當天 某兩個時間段 select from mytable where datediff dd,mydate,get...
SQL Server中查詢CPU占用高的SQL語句
sql server中查詢cpu占用高的情況,會用到sys.sysprocesses dm exec sessions dm exec requests 一 檢視當前的資料庫使用者連線有多少 use master goselect from sys.sysprocesses where spid 5...