位置: 编程技术 - 正文

SQL 查询性能优化 解决书签查找(sql查询速度慢如何优化)

编辑:rootadmin
先来看看什么是书签查找:     当优化器所选择的非聚簇索引只包含查询请求的一部分字段时,就需要一个查找(lookup)来检索其他字段来满足请求。对一个有聚簇索引的表来说是一个键查找(key lookup),对一个堆表来说是一个RID查找(RID lookup)。这种查找即是——书签查找。    书签查找根据索引的行定位器从表中读取数据。因此,除了索引页面的逻辑读取外,还需要数据页面的逻辑读取。 从索引的行定位器到从表中读取数据这之间会产生一些额外的开销,本文就来解决这个开销。 先看下我的测试表结构: 其中可以看出 有一个 聚簇索引 PK_UserID 和一个 非聚簇索引IX_UserName。 看看产生书签 查找的效果: select UserName,Gender from dbo.UserInfo where UserName='userN' 按上面的 SQL 产生执行计划 可以看出, 会产生一个书签查找(Key Lookup),如下图 如果把上面的 SQL 改写成 select UserName from dbo.UserInfo where UserName='userN' 可以看出 书签查找 没有了。 本SQL 产生书签查找的 主要原因是 本SQL 优化器会选择 非聚簇索引IX_UserName,来执生SQL 。IX_UserName 索引不包含 Gender 这个字段 于是产生个从索引到 数据表的 一个 查找 即 书签查找。 解决书签查找: 方法一、使用一个 聚簇索引     对于聚簇索引, 索引的叶子页面和表的数据页面相同,因此,当读取聚簇索引 键列的值时,数据引擎可以读取其它列的值而不需要任何行定位,这样就解决了书签查找。      对于这句SQL ( select UserName,Gender from dbo.UserInfo where UserName='userN')解决了书签查找的办法就是在UserName 上 建聚簇索引 ,因为一个表只有一个聚簇索引 ,这就意味着删除现有聚簇索引(PK_UserID),将会造成其它从表 中的外键约束 要发生更改,这需要考一些相关的工作,可能严重影响依赖于现有聚簇索引的其它查询。 方法二、使用一个 覆盖索引     覆盖索引 是在所有为满足SQL 查询不用到达基本表所需的列 建立的非聚簇索引。如果查询遇到一个索引并且完全不需要引用底层数据表,那么 该索引可以被认为是 覆盖索引。       对于这句SQL ( select UserName,Gender from dbo.UserInfo where UserName='userN') 解决书签查找的办法就是 在非聚簇索引IX_UserName 里包含 Gender 字段。       也就是在 建索引时 用INCLUDE 语句,具体操作如下 用INCLUDE 最好在 以下情况下使用:         1、不希望增加索引键的大小,但是仍然可以建一个 覆盖索引;         2、打算索引一种不能被索引的数据类型(除了文本、NTEXT和图像);         3、已经超过了一个索引的关键字列的最大数量 方法三、使用 索引连接   索引连接 是使用多个索引之间一个索引交叉来完全覆盖一个查询。如果覆盖索引变的非常宽,那么就可以考虑索引连接。     对于这句SQL ( select UserName,Gender from dbo.UserInfo where UserName='userN' and Gender=1)可以在 Gender 上 建一个非聚簇索引就行了。     对于这个例 子,可能 SQL 优化器并没有同时 选 用非聚簇索引IX_UserName 和 我们新建立在Gender 上的索引,这时我们可以告知 SQL 优化器 同时使用 这个两上索引,操作如下       select Gender,UserName from UserInfo with(index (IX_Gender,IX_UserName)) where UserName='jins' and Gender=0 好了就写这么多吧.

推荐整理分享SQL 查询性能优化 解决书签查找(sql查询速度慢如何优化),希望有所帮助,仅作参考,欢迎阅读内容。

SQL 查询性能优化 解决书签查找(sql查询速度慢如何优化)

文章相关热门搜索词:sql查询太慢,如何优化,查看sql性能,查看sql语句的性能,sql性能问题怎么排查,查看sql语句的性能,sql性能问题怎么排查,sql查询性能优化的方法,sql查询性能优化,内容如对您有帮助,希望把文章链接给更多的朋友!

SQL Server 数据库备份和还原认识和总结 (一) 可能许多同学对SQLServer的备份和还原有一些了解,也可能经常使用备份和还原功能,我相信除DBA之外我们大部分开发员队伍对备份和还原只使用最基础

SQL Server 数据库备份和还原认识和总结(二) 通过《SQLServer数据库备份和还原认识和总结(一)》,相信您对数据备份和还原有了一个更深入的认识,在上文中我没有对事务日志做剖析,在此推荐

SQL Server自动更新统计信息的基本算法 自动更新统计信息的基本算法是:·如果表格是在tempdb数据库表的基数是小于6,自动更新到表的每个六个修改。·如果表的基数是大于6,但小于或等于

标签: sql查询速度慢如何优化

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

上一篇:编写SQL需要注意的细节Checklist总结(编写sql需要注意什么)

下一篇:SQL Server 数据库备份和还原认识和总结 (一)(sqlserver数据库恢复挂起状态)

  • 个体工商户应如何购买社会保险公积金
  • 小规模纳税人刚成立公司如何记账
  • 诚信纳税的含义是什么
  • 租赁费税率3%
  • 代开普通发票需提供哪些材料
  • 劳务外包人员算不算从业人员
  • 三项经费包括在哪些内容
  • 金蝶专业版二级科目设置
  • 固定资产遭受自然灾害账务处理
  • 销售自己使用过的固定资产如何开票
  • 商业承兑汇票可以提前承兑吗
  • 财务部门使用固定资产的折旧计入管理费用
  • 小规模企业工资表怎么做
  • 分公司注销存货处理
  • 当月预交增值税时所属期选了上期怎么办
  • 知识产权服务项目
  • 计提本月应缴纳增值税
  • 小规模纳税人怎么算税
  • 个人所得税生产经营所得税率表2023
  • 外贸企业出出口退税会计科目怎么做账?
  • 营改增后还要交企业所得税吗
  • 出口收取佣金要开发票吗?
  • 960011115金税盘错误
  • 居委会有没有税收政策
  • sd标准差是什么意思
  • 金融资产包括哪三大类及会计科目
  • 事业单位什么情况下可以提前退休
  • 借款的印花税入哪个账户
  • macOS Big Sur 11.0.1(20B29)正式版发布(附可使用的Mac机型)
  • 电脑找不到休眠设置了
  • win10系统出现蓝屏恢复
  • 偶然所得是什么科目
  • 国家统计局一套表平台网址
  • win11企业版激活
  • win10的病毒隔离有用吗
  • ixapplet.exe - ixapplet是什么进程 有何作用
  • 银行结算账户的种类
  • 企业对外捐赠扣除标准有哪些?
  • 施工单位工程款支付程序
  • 设备拆修痕迹影响大吗
  • 结转本月收入类账户到本年利润
  • 股权激励费用摊销计算
  • 发票多开了一张怎么处理?
  • 2021年前端面试
  • php判断ua
  • php access_token
  • 帝国cms安装教程
  • 以股权换股权税务问题
  • 主营业务收入和营业外收入的区别
  • 居间协议合同范本完整版
  • 购扶贫产品怎么记账
  • 手机做h5
  • 多提的增值税该怎么做账
  • 港资企业属于什么性质
  • 关于SQL Server安全控制的说法正确的是
  • 税法中减除和减退的区别
  • 发票红冲要去税务局吗
  • 政府对企业提交的项目申请报告主要从等方面进行核准
  • 申报成功后怎么更正申报
  • 工资算营业成本还是管理费用
  • 无法收回的款项
  • 外地预缴个人所得税凭证怎么弄
  • 多认证的发票怎么做账
  • 收到的业务赔偿如何入账
  • windows提示无法完成更新
  • ms office是
  • linux设置权限755
  • Linux基础与应用开发指南pdf百度云
  • win8系统没有自带的游戏吗
  • win7显示桌面的组合键
  • android属性大全
  • 自动化软件安装工具
  • JavaScript中的this
  • 用jquerymobile案例
  • 为什么虚开增值税属于犯罪行为
  • 医保参保应保尽保
  • 上海市嘉定区税务局电话号码
  • 电子缴款凭证可以用于报销吗
  • 国家税务总局风险识别报告
  • 道路坡度最大限度不超过多少度
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设