sqlserver查詢用時的sql

2021-10-01 09:41:16 字數 2350 閱讀 4903

在日常工作中,要進行查詢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...