SQL Server 查询性能优化——索引与SARG(三)

上接SQL Server
查询性能优化——索引与SARG(二)

 

2  请不要进行负向查询

除了不该对许段数据开展计算外,非SARG 语句之格式语句还蕴含在WHERE条件子句中,使用负向查询操作符。 

如NOT 、!=、<> 、!>、!<、NOT EXISTS 、NOT IN及NOT LIKE 等,因为通过产生各个的目结构,SQL SERVER 可以有效地采取二分叉效仿开展查找,快速找到相应的数额,但是若查询条件是不要啊数据,其余的还设(就是负向查询), 则 无法使用索引进行第二瓜分查找,只能进展全表扫描或聚集索引围观。

以下同样是负向操作健立的SARG 条件查询以及非SARG 条件查询范例。从中可以看到两岸的履成本是无雷同的,相差十倍增左右,但是该数额查询的笔录数据为不等同。个人了解查询优化程序是依据数量查询的记录数据,来控制运用啊种实施计划。

 

 

 

 

逻辑读

 执行本

SELECT *

  FROM

 [WBK_PDE_

LIST_ORG_

HISTROY] 

where 

QTY_1=312

 

有主键(索引1,索引2)

1

表’WBK_PDE_LIST_ORG_HISTROY’。扫描计数1,逻辑读取137 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

137

 

 

图片 1

 

0.121935

无主键(索引2)

2

表’WBK_PDE_LIST_ORG_HISTROY’。扫描计数1,逻辑读取43 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

 

43

 

 

图片 2

 

0.121935

SELECT *

  FROM 

[WBK_PDE_

LIST_ORG_

HISTROY]

 where

 QTY_1<>312

 

有主键(索引1,索引2)

3

表’WBK_PDE_LIST_ORG_HISTROY’。扫描计数1,逻辑读取1314 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

 

1314

 

 

图片 3

 

1.03687

无主键(索引2)

4

表’WBK_PDE_LIST_ORG_HISTROY’。扫描计数1,逻辑读取1306 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

 

1306

 

 

图片 4

 

1.03687

 

 

 

 

 

 

 

 小结:

查询语句

逻辑读

查询记录数量

执行成本

1

137

37

0.121935

2

43

37

0.121935

3

1314

60796

1.03687

 4  1306  60796  1.03687
       

 

3 不要当WHERE子句被对字段使用函数

以查询语句被针对字段使用函数,就是对准配段数据开展测算,所以这些还不到底SARG。使用函数之后 ,SQL SERVER 需要用数据表内所有记录的连锁字段输入到函数中,如果起100万长条记下,就需要调用函数100万差,这将是性杀手。

脚列有点儿个非SARG与SARG的询问资金区别的示范。

 

 

 

逻辑读

 

 

 

SELECT *

   FROM [WBK_PDE_LIST_ORG_HISTROY] where dbo.f_qty(QTY_1,G_QTY)=400

 

 

数值函数计算

1

表’WBK_PDE_LIST_ORG_HISTROY’。扫描计数1,逻辑读取1428 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

 

1428

 

 

图片 5

 

1.03687

 

SELECT *   FROM [WBK_PDE_LIST_ORG_HISTROY] where QTY_1=200 and G_QTY=200

 

 

2

表’WBK_PDE_LIST_ORG_HISTROY’。扫描计数1,逻辑读取428 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

 

428

 

 

图片 6

 

0.42645

 

 

 SELECT * FROM [WBK_PDE_LIST_ORG_HISTROY] where dbo.[f_ByteLeft](wbook_no,14)=’BE404942450013′

 

 

字符函数计算

3

表’Worktable’。扫描计数0,逻辑读取0 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

表’WBK_PDE_LIST_ORG_HISTROY’。扫描计数2,逻辑读取850 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

850

 

 

图片 7

 

1.03904

 

SELECT *  FROM [WBK_PDE_LIST_ORG_HISTROY] where wbook_no=’BE404942450013′

 

 

4

表’WBK_PDE_LIST_ORG_HISTROY’。扫描计数1,逻辑读取3 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

 

3

 

 

图片 8

 

0.0033071

 

 

 

 

 

 

小结:

查询语句

逻辑读

查询记录数量

执行成本

1

1428

3873

1.03687

2

136

37

0.42645

3

850

3873

1.03904

 4 3 22  0.0033071
       

相关文章