《SQL Server 20005性能调教》读书笔记-TSQL相关

TSQL相关:

1:不要对数据域做预算

select [title] from [person].[contact]where [lastname]=@1and [firstname]=@2

select [title] from [person].[contact]where (([lastname]+@1)+[firstname])=@2

ctrl+L 从查询计划的图标中可以看出明显的差异,原因SARG的写法可以让查询分析优化程序可以直接对比条件常量,可以有效的建立在lastname上的索引,而非SARG则因为需要才知道数据是否符合,导致无法直接使用索引,因而采用群集索引扫描。

2:勿负向查询

负向操作如NOT,<>,!=,!>,!<,not exists,not in ,not like等。原因为:通过索引顺序的结构,sql server可以有效地使用二分查找,快速找到对等的数据,反则,只好扫描所有数据。

实例:

select salesorderId from saleorderdetails where speclalofferid<>2

select salesorderId from saleorderdetails where speclalofferid>2 or speclalofferid<2

效率是不一样的。

3:勿在where子句对字段使用函数

--非SARG

select * from employee where subsrting(lastName,1,1)='D'

--SARG

select * from employee where lastName like 'D%'

4:小心使用or操作

在使用or布尔操作的时候,多个条件中若有一个条件没有合适的索引,则其他再多的字段有索引也是没有用的,只有整个数据库表或集群索引扫描一遍,才确定全部的数据是否有符合的记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值