关于SQL Server2005中的Bookmark Lookup一点疑惑!!!
--创建表
if OBJECT_ID('news') is not null
drop table news
create table news
(
news_id bigint primary key,
news_content varchar(8000),
news_datetime datetime
)
--为时间列建立索引
create index idx_datettime on news(news_datetime)
如上代码所示,创建一个新闻表news,其中有3列分别是ID,新闻内容,添加时间;其中news_id为默认的聚集索引,手动为“添加时间”列加上了非聚集索引;
我在书上看到非聚集索引只能返回索引关键列,也就是说我只查询时间列是高效的,如下:
select news_datetime from news
where news_datetime between '2010-08-18 16:03' and '2010-08-18 16:04'
如果我一次性查询所有的列用select *,SQL Server的执行计划会直接用聚集索引扫描所有的行,这个时候news_datetime的索引是不是就没什么效果了,下面是执行计划的IO情况:
select * from news
where news_datetime between '2010-08-18 16:03' and '2010-08-18 16:04'
表'news'。扫描计数1,逻辑读取23045 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,
因为非聚集所以默认情况下,都包含本表的聚集索引列,也就是说我用news_datetime作谓词查找,只查询news_id 是索引查找,而不是扫描,然后我突发奇想写下这样的SQL:
select * from news where news_id in(
select news_id from news
where news_datetime between '2010-08-18 16:03' and '2010-08-18 16:04')
表面上看多了个嵌套,但我惊奇的发现尽管这条SQL长,看似复杂,但是IO情况却比上面要好,如下:
表'news'。扫描计数2,逻辑读取19016 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,
最后我看执行时间的确下面比上面的好快不少。虽然效率差别不大,但是心中有疑惑,还忘各位SQL大人帮忙看下;区别到底在哪里,他们内在的执行的机制和顺序有何不同!
相关推荐
解析SQL Server聚焦移除(Bookmark Lookup、RID Lookup、Key Lookup)
本文主要讲解索引性能优化,着重对Bookmark Lookup、RID Lookup、Key Lookup三者进行移除的实现进行解析,以此来提高查询性能。希望对大家有所帮助
SQLServer索引基础知识----聚集索引,非聚集索引[归纳].pdf
SQLServer索引基础知识----聚集索引,非聚集索引[归纳].pdf
CO-043A Released SHIPPING AND HANDLING TRAY FOR LP5 SOCAMM2 MODULE.rar
CO-043A Released SHIPPING AND HANDLING TRAY FOR LP5 SOCAMM2 MODULE.rar
阴影蜘蛛的判定与处理 vue
阴影蜘蛛的判定与处理 vue
硕士复现燃料电池供氢系统建模及控制策略Simulink仿真(附带说明PPT+参考文献+复现模型+实物源码)
内容概要:本文围绕燃料电池供氢系统的建模与控制策略展开,依托Simulink仿真平台构建了完整的系统动态模型,深入研究了供氢过程的关键动态特性及先进控制方法的设计与实现。内容涵盖系统建模流程、控制策略设计、仿真验证与结果分析,并配套提供详细的说明PPT、参考文献、可复现的仿真模型及实物源码等丰富资源,便于读者系统性地理解与复现研究成果。研究重点在于优化供氢压力、流量与响应速度,提升燃料电池系统的运行效率、稳定性与动态适应能力,对新能源领域的工程实践与学术研究具有重要参考价值。; 适合人群:具备自动化、电气工程、能源动力或控制科学等相关专业背景,正在从事新能源技术、氢能系统或仿真实验研究的硕士研究生、博士生及科研人员。; 使用场景及目标:①掌握燃料电池供氢系统的核心建模方法与Simulink高级仿真技巧;②学习并复现已有先进控制策略,进一步开展系统优化与创新设计;③为撰写高质量学术论文、完成学位课题或工程验证提供完整的理论支持与技术方案。; 阅读建议:建议结合所提供的PPT讲解、参考文献与Simulink模型逐步操作,注重理论分析与仿真实践的深度融合,在仿真过程中主动调试参数、观察动态响应,以深刻理解系统行为与控制机理,最大化学习与研究成效。


疑难问题
