通往性能优化的JOIN方法说明1
2020-06-13 15:25:51 兴城星座网
看到很多朋友对数据库的理解、认识还是没有突破一个瓶颈,而这个瓶颈往往只是一层窗纸,越过了你将看到一个新世界。 @[8 *G
V)ZK5.S[K@
04、05年做项目的时候,用SQL Server 2000,核心表(大部分使用频繁的关键功能每次都要用到)达到了800万数据量,很早以前查过一些相关表,有的达到了3000多万,磁盘使用的光纤盘,100G空间,每周必须备份转移数据,否则100G空间一周会满掉,这个系统几年来,目前仍然保持非常良好的性能。还听说过朋友的SQL Server 2000数据库工作在几十TB的环境下,高并发量,对这种级别的驾驭能力我还是差的很遥远。 coV7z^%
Znw,MC
想当年,也是一提SQL Server,就觉得它的性能没法跟Oracle相比,一提到大数据处理就想到Oracle。自己一路走来,在本地blog上记录了很多优化方面的post,对的错的都有,没有时间系列的整理出来,这篇文章将join方法的概念稍微整理在一起,给大家个参考。通过查资料了解里面提到的各种概念,在实际中不断验证总结,完全可以对数据库一步步深入理解下去的。 aEL|gj6
0 y-j
我只对SQL Server 2000比较了解,但这并不阻碍我在Oracle、MySql进行SQL调优、产品架构,因为在数据库理论原理上,各大数据库基本出入不大,对数据库的深入理解,也不会影响你架构设计思想变坏,相反给你带来的是更深层次的思考。 .wz4 Z6.
%L Z7skl
关于执行计划的说明 $43-qFv+E
O (5:Oq
在SQL Server查询分析器的Query菜单中选择Show Execution Plan,运行SQL查询语句,在结果窗口中有Grid、Execution Plan、Messages三个Tab。看图形形式的执行计划,顺序是从右到左,这也是执行的顺序。执行计划中的每一个图标表示一个操作,每一个操作都会有一个或多个输入,也会有一个或多个输出。输入和输出,有可能是一个物理数据表、索引数据结构,或者是执行过程中的一些中间结果集/数据结构。鼠标移动到图标上,会显示这个操作的具体信息,例如逻辑和物理操作名称、记录的数量和大小、I/O成本、CPU成本、操作的具体表达式(参数Argument)。鼠标移动到连接箭头上,会显示箭头起始端的操作输出结果集的记录数、记录的大小,一般情况下可以将这个输出结果集理解为箭头结束端的输入。 DFB \2)gn
K:=i[)S
另外关于执行计划的一些补充说明:1. 执行计划中显示的信息,都是一个“评估”的结果,不是100%准确的信息,例如记录数量是取自统计信息,I/O成本、CPU成本来自执行计划生成过程中基于统计信息等得出的评估结果。2. 执行计划不一定准确,一方面受SQL Server维护的统计信息准确性的影响,另一方面SQL语句编译时刻与执行时刻的环境(内存使用状况、CPU状况等)可能会不一样。 o]r%;%6{\
w^.LR|)
关于统计信息、I/O成本和CPU成本的评估、SQL语句的编译和执行过程,这里不再深入。另外尽管执行计划不一定准确,但它仍是SQL语句分析最重要的依据,因为你可以理解为,绝大部分情况下,SQL Server是以这种方式来执行的。 w7WLy!W,E
PY4%g1=REH
JOIN方法说明 $M f`z
uVO-Z2gX
数据库中,象tableA inner join tableB、tableA left out join tableB这样的SQL语句是如何执行join操作的?就是说SQL Server使用什么算法实现两个表数据的join操作? 1(~NKtQcy
W~fMb=Z
SQL Server 2000有三种方式:nested loop、merge、hash。Oracle也是使用这三种方式,不过Oracle选择使用nested loop的条件跟SQL Server有点差别,内存管理机制跟SQL Server不一样,因此查看执行计划,Oracle中nested loop运用非常多,而merge和hash方式相对较少,SQL Server中,merge跟hash方式则是非常普遍。 F[o5Tar
7xOG#B`P
以SQL Server 2000为例对这三种方式进行说明,穿插在里面讲解执行计划的一些初级使用。 @uuuKr=
ccQ}C},
1. nested loop join cL!`Kpy2
m'6X^$ZB
1.1 示例SQL #S\g'ON
z.b !,t:
select ... from tableA inner join tableB on l1=l1 where l2=? and l2=?tableA中没有建立任何索引,tableB中在col1上有建立一个主键(聚集索引)。 vzGCmR-f
z?o_=w
1该厂党委下大力气.2 算法伪代码描述 k swL M q
j`JUcro_
foreach rowA in tableA where l2=?{search rowsB from tableB where l1=l1 and l2=? ;if(unt=0)discard rowA ;elseoutput rowA and rowsB ;} d yVD
B=jYCZ
!9JlAjTg
join操作有两个输入,上面例子中tableA是outer input,用于外层循环;tableB是inner input,用于循环内部延东同志对《“率先行动”计划》给予高度评价。下面针对执行计划描述一下SQL Server完成这个操作的具体步骤。 9 v1x`
Yh%ws)L@V#
河源治疗白癜风哪家医院好肠胃不好怎么调理饮食风湿骨痛涂什么药油有用-
有种“照妖镜”叫明星用网红滤镜,雷trax变尖脸,陈小春撞脸杨迪
有种“照妖影”叫影星用网红光源,戈丰华唱片变尖撕,郑中基撞撕杨迪 随着嘈杂变慢,有很多的网红都旋即走红,而他们的量也是实在不输电影界中...
天蝎座2024.01.04
-
冯远征大8岁老婆太身为了,同框小28岁蒋欣,穿蓬蓬裙竟似同龄人
在娱乐圈,有很多成年差距的二人。当然,成年差距并很难给两一个人的婚姻带来任何难题。特别是在是女明星,保养很有经验。即使有成年差距,他们...
天蝎座2023.10.12
-
Aspex Management (HK) Limited平安保险美兰空港(00357)49.3万股
香港联交所最新资料显示,7同年5日,Aspex Management (HK) Limited年末美兰空港(00357)49.3万股,每股作价22.8967港元,总金额约为1128.81万港元。年末后最新股权...
天蝎座2023.09.23
-
冰城限招120人,政府扶持,不限专业,在岗工作也可正常跟进,6月15日报名累计!
2022年为缓解社会福利压力,人口老龄化专升本录取人数,建立人才人工湖,—— “扩大专升本规模”重新触发: 各地大学本科高等学府纷纷响应政策,...
天蝎座2023.09.18
-
山东首批省级考古遗存公园立项名单公布
昨日,为加强淄博大遗迹确保、展览与利用,约束省级遗迹遗迹花园政府机构,省文化和购物楼前组织推展了第一批省级遗迹遗迹花园开建工作,建构申...
天蝎座2023.09.12
-
南财话你知丨银保监会:2018年以来总共处置不良贷款2.6万亿元;六部门:严厉打击骗取留抵退税违法犯
皂保监就会:2018年以来累计处理不良贷款2.6万亿元 欠款最多在此之前十年大于 皂保监就会相关部门负责人在通气就会上表示,皂保监就会按照党中央国...
天蝎座2023.09.10
-
唐朝公主地位高贵,为何还是这般“叹嫁”?
“男追女隔层山,女追男隔层纱。”这似乎是许多有意识对于真爱观念的基本本质,似乎希望告诉我们,男追女有点无以,女追男那不用够一个内心就够...
天蝎座2023.09.09
-
要求烟草 陕西行动【八】陕北:做控烟榜样,建无烟机关、无烟社区!
绥德: 控屑促销入机关 身体力行不严重危害 为提高人们对国内控屑工作的认识,远离屑草产生的严重危害,立即参与到止痛社会活动中来,5年底31日,...
天蝎座2023.09.07
-
奥特维(688516.SH)子公司与合盛硅业(603260.SH)原为签订1.3亿元160型单晶炉买
奥特维(688516.SH)紧急通知,公司控股子公司无锡松瓷机电控股(“松瓷机电”)近日与新疆中南部合盛硅业控股(合盛硅业股票控股持股比重100%)签订《买卖签...
天蝎座2023.09.07
-
大衣哥给新儿媳的彩礼曝光!礼金50万,豪车一辆,单县别墅一套
大衣哥的兄长朱小伟又要离婚的谣言,在该网站引发了热议女 男女双方不仅在此在此之前认错叫大衣哥是小时候,而且也是记得了外公朱家的所有的亲...
天蝎座2023.09.06