什么是R策略?优化器可能会采用R策略,这种策略会生成1个工作表

luxi0194 2010-06-12 09:20:45
从数据库访问的角度 看,含有不连续连接词(OR和IN)的WHERE子句一般来说性能不会太好。所以,优化器可能会采用R策略,这种策略会生成1个工作表,其中含有每个可能 匹配的执行的标识符,优化器把这些行标志符(页号和行号)看做是指向1个表中匹配的行的"动态索引"。优化器只需扫描工作表,取出每一个行标志符,再从数据表中取得相应的行,所以R策略的代价是生成工作表。
...全文
303 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
maomaohr 2010-06-15
  • 打赏
  • 举报
回复
学习内容一下..
永生天地 2010-06-15
  • 打赏
  • 举报
回复
不了解,正在学习
obuntu 2010-06-12
  • 打赏
  • 举报
回复
估计是这作者自己发明的吧。。。
没听过R策略。。
luxi0194 2010-06-12
  • 打赏
  • 举报
回复
3.2 高效的查询选择
  从以上查询优化的3个阶段不难看出,设计出物理I/O和逻辑I/O最少的方案并掌握好处理器时间和I/O时间的平衡,是高效查询设计的主要目标。也就是说,希望设计出这样的查询:充分利用索引、磁盘读写最少、最高效地利用了内存和CPU资源。

  以下建议是从SQL Server优化器的优化策略中总结出来的,对于设计高效的查询是很有帮助的。

  1.如果有独特的索引,那么带有“=”操作符的WHERE子句性能最好,其次是封闭的区间(范围),再其次是开放的区间。

  2.从数据库访问的角度看,含有不连续连接词(OR和IN)的WHERE子句一般来说性能不会太好。所以,优化器可能会采用R策略,这种策略会生成1 个工作表,其中含有每个可能匹配的执行的标识符,优化器把这些行标志符(页号和行号)看做是指向1个表中匹配的行的“动态索引”。优化器只需扫描工作表,取出每一个行标志符,再从数据表中取得相应的行,所以R策略的代价是生成工作表。

  3.包含NOT、、或! =的WHERE子句对于优化器的索引选择来说没有什么用处。因为这样的子句是排斥性的,而不是包括性的,所以在扫描整个原来数据表之前无法确定子句的选择性。
luxi0194 2010-06-12
  • 打赏
  • 举报
回复
obuntu 2010-06-12
  • 打赏
  • 举报
回复

给出具体链接地址看看。。
Andy__Huang 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 luxi0194 的回复:]
从数据库访问的角度 看,含有不连续连接词(OR和IN)的WHERE子句一般来说性能不会太好。所以,优化器可能会采用R策略,这种策略会生成1个工作表,其中含有每个可能 匹配的执行的标识符,优化器把这些行标志符(页号和行号)看做是指向1个表中匹配的行的"动态索引"。优化器只需扫描工作表,取出每一个行标志符,再从数据表中取得相应的行,所以R策略的代价是生成工作表。
[/Quote]

R策略是什么没有研究过,只关心查询速度。
hfCoder 2010-06-12
  • 打赏
  • 举报
回复
不懂,帮顶
  • 打赏
  • 举报
回复
学习,接分
caixia615 2010-06-12
  • 打赏
  • 举报
回复
LZ想表达啥?

22,295

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧