位置: 编程技术 - 正文

通过使用正确的search arguments来提高SQL Server数据库的性能(在正确使用和正常维护的条件下)

编辑:rootadmin

推荐整理分享通过使用正确的search arguments来提高SQL Server数据库的性能(在正确使用和正常维护的条件下),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:对于怎么使用,进行使用,使用的正确方法,使用的正确方法,对于怎么使用,使用的正确方法,采用 使用,对于怎么使用,内容如对您有帮助,希望把文章链接给更多的朋友!

原文地址: Server上关于indexing的一个特定的性能问题。

问题

看看下面的简单的query语句,可能你已经在你看到过几百次了

上门的代码查询一个销售信息,需要一个特定的月份和年份的,这不是很复杂。但是不幸的的事,这个qeury的效率不行,即使OrderDate这一列已经做了Non-Clustered Index。可以看看下面的qeury执行图,你能看到Query Optimizer已经选择了定义在列OrderDate下的Non-Clustered Index,但是SQL Server却做了Index的一个完整扫描,而不是期待中的Seek operation。

这实际上不是SQL Server的限制,而是relational database都是这样的。只要你对一个做了index的列(Search Argument)加了函数操作,数据库引擎就必须再次扫描这个index,而不是去直接执行seek operation

解决方案

通过使用正确的search arguments来提高SQL Server数据库的性能(在正确使用和正常维护的条件下)

为了解决上门的问题,必须要避免在列上门直接应该函数,比如上面的问题可以用下面的代码来代替

我们重写的这个query语句,能达到同样的效果,不用函数MONTH了。从此query的执行图来看,SQL Server执行了seek operation,在查询的范围内进行的scan。所以,如果你要在where查询中用到函数,用到表达式的右侧,来避免性能问题。比如下面的例子。

这个query会使SQL Server扫描了整个Non-Clustered Index。所以当表变得更大的时候,这个扩展性等各方面就很差了。如果把函数放在表达式的右侧,SQL Server就能执行seek operation了

总结

通过今天的blog,我想你们已经认识到了不要在做过indexed的列上直接应用函数,不然SQL Server会扫描你整个index,而不是做seek operation。当你的表变得越来越大的时,你会崩溃的。

译后记

这也是我在看微软SQL Server认证考试Exam-的TrainingKit的时候,它书里面反复强调的。简单来讲就是保证不要直接用函数作用在做过index的列上,要用函数的话,变通到表达式的右侧来。至于为什么会影响性能。因为我对index还不熟悉,我理解的不是很清晰。

我大概猜想如下,先记下,欢迎讨论。

对某一个列做index,是不是类似对这一列的数据做一个hash映射,当在查找这一列的数据的时候,直接可以做O(1)的操作(是不是就是它讲的seek operation)。如果对这一列使用了函数,SQL Server的机制就是不会重新做一个作用了函数后的列的hash,它就简单的一个一个的比较了。是O(N)的操作了。

CentOS安装SQL Server vNext CTP1教程 今天微软正式发布上SQLServerSP1,根据以往的SP1定律,可以在生产环境上使用了。打了SP1的标准版将具有企业版几乎所有的的功能。只有RAM超过GB或

SQL SERVER中强制类型转换cast和convert的区别详解 SQLSERVER中强制类型转换cast和convert的区别在SQLSERVER中,cast和convert函数都可用于类型转换,其功能是相同的,只是语法不同.cast一般更容易使用,convert的优点是

sql中 order by 和 group by的区别 orderby从英文里理解就是行的排序方式,默认的为升序。orderby后面必须列出排序的字段名,可以是多个字段名。groupby从英文里理解就是分组。必须有聚

标签: 在正确使用和正常维护的条件下

本文链接地址:https://www.jiuchutong.com/biancheng/318986.html 转载请保留说明!

上一篇:SQL Server配置管理器无法连接到WMI提供程序(SQL server配置管理器打开TCP/IP后重启不了)

下一篇:CentOS安装SQL Server vNext CTP1教程(Centos安装ntfs-3g)

  • 房产契税什么时候交的小知识
  • 小规模企业所得税计算
  • 期末存货采用成本与可变现净值孰低法
  • 公司产品的打样费入什么会计科目
  • 零星物流运费无法支付
  • 六个点的税率是小规模吗
  • 固定资产采购计入什么科目
  • 购买日子公司账面价值调整为公允价值
  • 酒店住宿费一般多少钱一晚
  • 所得税不能税前扣除项目
  • 小规模纳税人开专票税率是1%还是3%
  • 个人可以代公司缴税吗
  • 购入固定资产税费怎么算
  • 什么是劳动保护费支出
  • 处置打包债权如何缴纳个人所得税?
  • 发票过期未认证可以用吗
  • 对方承担税费怎么做会计分录
  • 公司出租商铺要交哪些税
  • 预付账款怎么做账
  • 工程完工财务要做些什么
  • 餐饮发票免税能报销吗
  • 或有负债如何计量
  • 公会经费开支范围
  • 汇算清缴当年分配的股息红利
  • 股东能随便提走入账资金吗
  • 王者荣耀中苏烈的最强出装
  • 招标场地费怎么收
  • PHP:spl_autoload_register()的用法_spl函数
  • 销售已使用过的小汽车增值税
  • 前端向后端传值的函数
  • 华为心率血压智能手表怎么样
  • 上传图片照片
  • php redis使用
  • 公众号 企业
  • uniapp传值
  • 买发票前金税盘需要抄税和清卡吗?
  • 前端实现微信联系人二维码
  • framework 开发
  • 业务招待费专票可以抵扣增值税吗
  • win11任务管理器卡死没响应
  • css盒子模型怎么做
  • 固定资产发票税率多少
  • 员工辞退补偿金需要交个税吗
  • python安装后找不到了
  • 以公司名义开的诊所算个体工商户吗
  • 提供劳务收入是指
  • 微信小程序实现支付功能
  • 交易性金融资产属于什么科目
  • 直接免征的税款属于政府补助吗
  • 土地增值税扣除项目税金包括哪些
  • 应交税费会计分录完整版
  • 租房合同 陷阱
  • 企业所得税征前还是征后
  • 航天信息的发票以什么形式导入开票信息
  • 商业地产收税
  • 公允价值变动损益在利润表哪里
  • 代理进口货物如何确定增值税纳税人
  • 年末资产减值损失可以税前扣除吗
  • 一季度存款
  • 出租写字楼写字楼
  • 专项资金补助经费如何入账
  • 买相机送肩带吗
  • 公司财务部门工作职责
  • 管家婆销售赠品是不是自动结转成本?
  • xp windows功能在哪里
  • 服务器远程超出配置范围
  • Windows 2003作中转VPN服务器多路由共享上网的方法
  • 神舟平板寸劲开天
  • 电脑avg是什么软件
  • 怎么彻底关闭windows更新
  • linux 系统查看
  • shell32.exe - shell32是什么进程 有什么用
  • win7 64位纯净版系统c盘空间显示与实际占用空间不对的解决方法图文教程
  • cocos2dx视频教程
  • 可以在windows环境下双击而直接放映
  • python如何用
  • 电子税务局报表报送在哪里
  • 进口汽车零部件编码查询
  • 增值税进项税额抵扣凭证
  • 税务师报考条件和时间2021湖北
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设