- 浏览: 1521335 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (532)
- 软件设计师 (7)
- PSP (5)
- NET MD (9)
- Hibernate (8)
- DIY (51)
- Work (43)
- GAME (24)
- 未分类 (44)
- iPod (6)
- MySQL (39)
- JSP (7)
- 日语能力考试 (36)
- 小说 (4)
- 豆包网 (23)
- 家用电脑 (7)
- DB2 (36)
- C/C++ (18)
- baby (9)
- Linux (13)
- thinkpad (23)
- OA (1)
- UML (6)
- oracle (24)
- 系统集成 (27)
- 脑梗塞 (6)
- 车 (8)
- MainFrame (8)
- Windows 7 (13)
- 手机 (8)
- git (12)
- AHK (2)
- COBOL (2)
- Java (9)
最新评论
-
安静听歌:
... ...
UUID做主键,好还是不好?这是个问题。 -
lehehe:
http://www.haoservice.com/docs/ ...
天气预报 -
lehehe:
[url http://www.haoservice.com/ ...
天气预报 -
liubang201010:
监控TUXEDO 的软件推荐用这个,专业,权威.并能提供报警和 ...
(转载)Tuxedo中间件简介 -
tinkame:
Next[j] =-1 当j=0时;=Max{k|0<k ...
KMP字符串模式匹配详解
[转]SQL Server 2000执行计划成本(4/5)
循环、哈希与合并连接比较
在分别讨论了循环、哈希与合并连接的执行计划成本规则之后,现在将3个连接类型放到适合各自条件的环境下一起比较。
下面的图2-27显示了循环、哈希与合并连接在1P/2P系统上的启动成本。外部源和内部源启动成本描述了索引搜索的基本成本包括每行成本0.0000011。连接成本也除去第一行,这样似乎仅有个案是少量变化的。4P系统的启动成本仅在索引搜索基本成本(0.003283025)上不同。
图2-27.循环、哈希与合并连接在1P/2P系统上索引搜索的启动成本
表2-1显示了在一对一的循环、哈希与合并连接在两个表都有明确的SARG下的每行成本和每页成本。每行(/r)成本适用于所有行,每页(/p)成本仅适用于需要增加的叶页。每行和每页总成本的规则需要将每页条件计算在内。
Per row costs 1-1 |
Outer Source |
Inner Source |
Join |
Total |
Loop | 0.00000110/r | 0.00007960- | 0.00000418/r | 0.000084880- |
Hash | +0.00074074/p | ~0.00015400/r | ~0.00001881/r | ~0.000155280 |
Merge | 0.00000110/r | 0.00000110/r | ~0.00000446/r | +0.00074074/p |
表2-1.连接里增加行的成本规则构成
表2-2显示了每页10行和100行时计算得到的每行总成本,此时还要计算增加的叶页成本。
Per row costs 1-1 |
10 rows / page |
100 rows / page |
Loop | 0.0002294 | 0.0001627 |
Hash | 0.0001692 | 0.0000358 |
Merge | 0.0001548 | 0.0000215 |
表2-2.连接里增加行的成本规则构成
循环连接的启动成本最低且确定。这主要是由于循环连接操作自身没有而哈希与合并连接各自有~0.017770与~0.0056046的基本成本。
3个连接的外部源成本相同,都是索引搜索操作。3个连接类型在每行成本结构上的不同大部分来自内部源,部分来自连接自身。循环连接的内部源成本结构反映了重复的索引搜索操作。哈希与合并连接的内部源成本结构仅仅是索引搜索操作。连接自身的每行成本循环连接是最低的,紧随的是合并连接而哈希连接大约是循环连接的4倍。
少量行参与时循环连接的成本结构有最低的计划成本。合并连接有最低的总的每行成本,接着是哈希连接,而循环连接有最高每行成本。合并连接总是比哈希连接的计划成本低。在一些行参与时,合并连接的开销小于循环连接。在大类行参与时,哈希连接也比循环连接的开销低。合并与哈希连接的好处在于对于高密度(每页行数)索引来说每行成本是最好的。当每页里的行数即密度低时,内部源的每行成本抵消了合并与哈希连接的这一好处。
表2-3显示了内部源增加行的每行成本。
Additional IS costs per row | Inner Source | Join |
Loop | 0.00000110/r +0.00074074/p |
0.00000418/r |
Hash | 0.00000110/r +0.00074074/p |
0.00000523/r |
Merge | 0.00000110/r +0.00074074/p | 0.00000237/r |
表2-3增加行的内部源成本
注意循环连接的每页组件仅适用于外部源每行连接到内部源足够多的行以要求额外的叶页的情形,而哈希与合并连接的每页组件适用于内部源的所有行的总和要求额外的叶页的情形。如果每个表的行数差别很大,那么哈希和合并连接就会丧失其好处,因为循环连接有更低的内部源每行成本。
图2-28a和2-28b显示了循环、哈希与合并连接在为内部源和外部源表指定明确的搜索参数情形下1P/2P系统的正常的总成本,此时每个表有适当的索引,且外部源的每一行正好连接到内部源的一行。查询成本的计算和1P/2P系统的单行索引搜索成本(0.0064081)有关。
图2-28a.1P/2P系统上的循环、哈希与合并连接的总成本(对数比例)
图2-28b.1P/2P系统上的循环、哈希与合并连接的正常成本(线性比例)
循环连接操作自身没有启动成本,仅在内部源和外部源表的索引搜索操作上有启动成本。哈希连接操作的启动成本在1P/2P系统上刚刚少于索引搜索的3倍而总的启动成本刚刚少于索引搜索操作的5倍。合并索引的启动成本在1P/2P系统上刚刚少于单个索引搜索而总的启动成本也稍微少于索引搜索的3倍。当两个表上有适当的的聚集索引或覆盖索引可用时,合并连接变得比循环连接在40行时有利,哈希连接则在~160行时比循环连接有利。在这个例子里,执行计划使用紧凑的高密度(每页超过400行)的覆盖索引。对于低密度的索引来说交叉点在更高的位置。
图2-29显示了4P系统的循环、哈希与合并连接的成本。4P系统的3个类型的连接的交叉点与1P/2P系统稍微有些不同。在4P服务器上,索引搜索基本I/O成本大约是1P/2P系统的一半。哈希与合并连接基本成本在1P/2P和4P系统上没有变化,所以启动成本在绝对数值上更低,但4P系统的索引搜索成本更高。
图2-29.4P系统上的循环、哈希与合并连接的正常成本(线性比例)
图2-30显示了带排序的合并和多对多合并连接和标准的循环、哈希、合并连接的比较。
图2-30.带排序的合并和多对多合并连接与循环、哈希、合并连接的比较(都在4p系统上)
带排序的开销在参与行不多时稍微少于哈希合并连接,但在参与行很多的时候开销就更高了。多对多合并连接在参与行不多时成本介于常规的合并和哈希连接之间,但在参与行很多的时候开销就要比两者都高。
在两个表中仅有一个存在搜索条件的情形下,哈希与合并连接会要求对另一个表进行表扫描。循环连接可以使用连接条件上的索引来避免表扫描。由于在1P/2P系统上表扫描基本成本是索引搜索基本成本的6倍(4P系统上是12倍),并且比增加的行成本高得多。所以合并与循环、哈希与循环的交叉点位于参与行充分多的时候(500-700行)。
当然,循环、哈希与合并连接的特征在BOL的“优化数据库性能”一节的“高级查询调优概念”里有描述。然而,看看实际的数字而不是依赖于定性的描述如小规模相似是值得的。
发表评论
-
MySQL配置文件my.cnf 例子最详细翻译
2009-07-20 11:58 1713http://www.blogjava.net/hunte ... -
MySQL :: @@Rowcount in MySQL
2009-03-02 15:39 2148@@Rowcount in MySQL? Posted ... -
MYSQL中删除重复记录的方法
2009-02-26 12:23 0MYSQL中删除重复记录的方法 2008 ... -
使用 MYSQLBINLOG 来恢复数据。
2009-02-26 12:21 0使用 MYSQLBINLOG 来恢复数据。 20 ... -
13.2.3. InnoDB Startup Options and System Variable
2009-02-20 13:37 1237http://dev.my ... -
mysql innodb 配置详解
2009-02-20 11:01 3541加为好友发送私信在线聊天 -
20.3.9 关于死锁 深入浅出MySQL——数据库开发、优化与管理维护
2009-02-20 10:50 3124深入浅出MySQL——数据库开发、优化与管理维护 回 ... -
mysql的临时表不支持自连接
2009-02-18 13:32 2313TEMPORARY TABLE ProblemsThe fol ... -
windows 下安装两个MySQL收藏
2009-02-03 16:28 2353由于两个MySQL进程需要不同的配置文件,以下所有操作均是在W ... -
1.4.1. What's New in MySQL 5.1
2009-02-03 16:25 11431.4.1. What's New in My ... -
查看mysql版本的四种方法
2009-02-02 10:57 9361:在终端下:mysql -V。 以下 ... -
Server SQL Modes
2009-02-01 11:06 13925.1.7. Server SQL Modes ... -
MySQL中的各种JOIN(CROSS JOIN, INNER JOIN, LEFT [OUTER]
2009-01-13 14:50 6179MySQL中的各种JOIN(CROSS JOIN, I ... -
[转]SQL Server 2000执行计划成本(5/5)
2009-01-09 15:26 1164[转]SQL Server 2000执行计划成本(5/5) ... -
[转]SQL Server 2000执行计划成本(3/5)
2009-01-09 15:23 1498[转]SQL Server 2000执行计划成本(3/5) ... -
SQL Server 2000执行计划成本(1/5)
2009-01-09 14:52 1612[转]SQL Server 2000执行计划成本(1/5) ... -
浅谈MySQL数据库优化
2009-01-09 14:46 1300浅谈MySQL数据库优化 [收藏此页] [打印] ... -
sql server支持create table as ...建表么
2009-01-09 11:52 8972sql server支持create table as .. ... -
SQL Server如何识别自动创建的索引
2009-01-08 15:57 1269SQL Server如何识别自动创建的索引 http://w ... -
请问在一个查询里表连接的顺序对查询的性能是否有影响
2009-01-08 12:02 1173请问在一个查询里表连接的顺序对查询的性能是否有影响? 楼主w ...
相关推荐
(2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项。 (3)将弹出“附加数据库”对话框,在该对话框...
对海量数据的处理一直是一个令人头痛的...SQL Server 2005新增的表分区功能,可以对数据进行合理分区,当用户在访问部分数据时,SQL Server最佳化引擎可以根据数据的实体存放,找出最佳的执行方案,而不至于大海捞针。
大学生在线实习及就业成才互动服务平台项目提出了一个在Microsoft SQL Server数据库系统中的分布式、异构查询处理器(DHQP)的结构总览,以支持对大容量的不同数据源的查询。主要突出解释了此结构的3个主要方面,首先,...
SQLSERVER编译与重编译 编译的含义 ...SQLSERVER会根据所涉及的对象的架构(schema)、统计信息以及指令的具体内容,估算可能的执行计划, 以及他们的成本(cost),最后选择一个SQLSERVER认为成本
例如:如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中...
1. 在SQL Server Management Studio平台下,通过观察Select/Insert/delete/update等SQL语句的查询执行计划,分析查询执行计划中连接、选择、投影等关系代数操作的实现方式及其执行成本。熟悉了解SQL SERVER数据库中...
(2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项。 (3)将弹出“附加数据库”对话框,在该对话框...
编译的含义 ————————————————————...在编译的过程中,SQLSERVER会根据所涉及的对象的架构(schema)、统计信息以及指令的具体内容,估算可能的执行计划,以及他们的成本(cost),最后选择一个SQLS
Windows 98/Me/2000/XP, Microsoft? Windows Server 2003 以及Microsoft? SQL Server 2000/2005均是微软公司产品,所有版权和权利归微软公司。 [返回页首] 1.1 系统特色 1.灵活的模板管理功能,通过报表模板定义...
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后...
因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可。如果WITH AS短语所定义的表名被调用两次以上,则优化器会自动将WITH AS短语所获取...
JAVA_JSP_sql server企业合同管理系统设计软件源码+数据库+WORD毕业论文文档: JAVA_JSP企业合同管理系统主要用于实现企业合同的管理, 基本功能包括:修改个人密码、合同信息管理、收款提醒模块、安全退出系统等。...
业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供友好的...
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后...
业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供...
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db ...
业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供友好的...
业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供...
第5章 创建资源和分配成本 5.1 理解资源 5.1.1 资源如何工作 5.1.2 Project如何使用资源信息影响日程安排 5.1.3 Project如何收集成本信息 5.2 创建资源列表 5.3 修改资源信息 ...
【摘要】 随着信息技术的飞速发展和日趋激烈...企业网上办公自动化将人从繁琐、无序、低序、低端的工作中解放出来从事核心事务,整体提高了单位办事效率和对信息的可控性,降低办公成本,提高执行力,使管理趋于完善。