计算机网站开发工作证岳阳网站建设哪里便宜
2026/2/15 21:37:02 网站建设 项目流程
计算机网站开发工作证,岳阳网站建设哪里便宜,公司展示网站模板,企业官网 开源文章目录 文档用途详细信息 文档用途 介绍HGDB中的扫描类型 详细信息 1、全表扫描 全表扫描在HGDB中也称为顺序扫描#xff08;seq scan#xff09;#xff0c;全表扫描就是把表的所有数据块从头到尾读一遍#xff0c;然后筛选出符合条件的数据块。 全表扫描在explain命…文章目录文档用途详细信息文档用途介绍HGDB中的扫描类型详细信息1、全表扫描全表扫描在HGDB中也称为顺序扫描seq scan全表扫描就是把表的所有数据块从头到尾读一遍然后筛选出符合条件的数据块。全表扫描在explain命令输出结果中用“Seq Scan”表示如下所示highgo# explain select * from emp;QUERYPLAN------------------------------------------------------Seq Scanonemp(cost0.00..1.14rows14width116)(1行记录)2、索引扫描索引通常是为了加快查询数据的速度而增加的。索引扫描就是在索引中找出需要的数据行的物理位置然后再到表的数据块中把相应的数据读出来。索引扫描在explain命令输出结果中用Index Scan表示如下highgo# explain select * from people where id14;QUERYPLAN---------------------------------------------------------------------IndexScanusinginx_idonpeople(cost0.44..8.45rows1width8)IndexCond:(id14)(2行记录)3、位图扫描位图扫描也是走索引的一种方式。方式是扫描索引把满足条件的行或块在内存中建一个位图扫描完索引后再根据位图列表的数据文件把相应的数据读出来。如果走了两个索引可以把两个索引形成的位图进行and或or计算合并成一个位图再到表的数据文件中把数据读出来。当执行计划的结果中行数很多时会进行位图扫描如非等值查询、IN子句或有多个条件都可以走不通的索引时。以下示例是返回值较多highgo# explain select ename from test where empno7499;QUERYPLAN----------------------------------------------------------------------------Bitmap Heap Scanontest(cost79.79..613.59rows4064width5)Recheck Cond:(empno7499)-BitmapIndexScanoninx_empno(cost0.00..78.77rows4064width0)IndexCond:(empno7499)(4行记录)在位图扫描中可以看到Bitmap Index Scan先在索引中找到符合条件的行然后在内存中建立位图之后再到表中扫描也就是看到 Bitmap Heap Scan。4、条件过滤条件过滤一般就是在where条件上加的过滤条件当扫描数据行时会找出满足过滤条件的行。条件过滤在执行计划中显示为Filter示例如下highgo# explain select ename from emp where empno7499;QUERYPLAN----------------------------------------------------Seq Scanonemp(cost0.00..1.18rows1width38)Filter:(empno7499)(2行记录)5、Nestloop Join嵌套循环Nestloop Join是在两个表连接时一种连接方式。在嵌套循环中内表被外表驱动外表返回的每一行都要在内表中检索找到与它匹配的行因此整个查询返回的结果集不能太大要把返回子集较小的表作为外表且内表的连接字段上要有索引。执行过程确定一个驱动表outer table另一个表为inner table驱动表中每一行与inner table中的相应记录关联。示例如下highgo# explain select * from people,dept where dept.deptnopeople.id;QUERYPLAN---------------------------------------------------------------------------NestedLoop(cost0.44..5719.30rows680width100)-Seq Scanondept(cost0.00..16.80rows680width92)-IndexScanusinginx_idonpeople(cost0.44..8.38rows1width8)IndexCond:(iddept.deptno)(4行记录)6、Hash Join优化器使用两个比较的表并利用连接键在内存中建立散列表然后扫描较大的表并探测散列表找出与散列表匹配的行。这种方式适用于较小的表可以完全放于内存中的情况这样总成本就是访问两个表的成本之和。但如果表很大不能完全放入内存优化器会将它分割成若干不听的分区把不能放入内存的部分写入磁盘的临时段此时要有较大的临时段以便提高I/O的性能。示例如下highgo# explain select * from test,dept where dept.deptnotest.deptno;QUERYPLAN--------------------------------------------------------------------HashJoin(cost25.30..1870.22rows57344width127)HashCond:(test.deptnodept.deptno)-Seq Scanontest(cost0.00..1056.44rows57344width35)-Hash(cost16.80..16.80rows680width92)-Seq Scanondept(cost0.00..16.80rows680width92)(5行记录)因为dept表小于test表所以Hash Join先在较小的表dept上建立散列表然后扫描较大的表test并探测散列表找出与之相匹配的行。7、Merge Join通常情况下散列连接的效果比合并连接好但如果源数据上有索引或者结果已经被排过序在执行排序合并连接时就不需要排序了这时合并连接的性能会优于散列连接。下面示例中people的id字段和dept01的depto字段都有索引且从索引扫描的数据已经排好序可以直接走Merge Joinhighgo# explain select people.id from people,dept01 where people.iddept01.deptno;QUERYPLAN-------------------------------------------------------------------------------------------------MergeJoin(cost0.86..64873.59rows1048576width4)MergeCond:(people.iddept01.deptno)-IndexOnly Scanusingpeople_pkeyonpeople(cost0.44..303935.44rows10000000width4)-IndexOnly Scanusingidx_deptnoondept01(cost0.42..51764.54rows1048576width2)(4行记录)删除dept01上的索引会发现执行计划中先对dept01排序后在走Merge Join示例如下highgo# explain select people.id from people,dept01 where people.iddept01.deptno;QUERYPLAN-------------------------------------------------------------------------------------------------MergeJoin(cost136112.80..154464.29rows1048576width4)MergeCond:(people.iddept01.deptno)-IndexOnly Scanusingpeople_pkeyonpeople(cost0.44..303935.44rows10000000width4)-Materialize(cost136112.36..141355.24rows1048576width2)-Sort(cost136112.36..138733.80rows1048576width2)SortKey: dept01.deptno-Seq Scanondept01(cost0.00..16918.76rows1048576width2)(7行记录)上面执行计划中可看到“Sort Key: dept01.deptno”这就是对表dept01的id字段进行排序。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询