SQL优化
文章平均质量分 93
Aric红尘醉
致力于数据处理,包括数据库开发、设计与建模、报表开发、ETL、数据仓库、数据挖掘、数据分析、BI、数据可视化等等
展开
-
SQL Server中的三种物理连接操作:嵌套循环连接、合并连接、哈希匹配
SQL server 内部实现了三种类型的内连接运算,大多数人从来没有听说过这些连接类型,因为它们不是逻辑连接也很少被用于代码中。那么它们什么时候会被用到呢?答案是要依情况而定。这就意味着要依赖于记录集和索引。查询优化器总是智能的选择最优的物理连接类型。我们知道SQL优化器创建一个计划开销是基于查询开销的,并依据此来选择最佳连接类型。 那查询优化器究竟是怎样从内部选择连接类型的呢? SQLServer在内部为查询优化器对连接类型的选择实现了一些算法,让我们来看下面的一些练习示原创 2015-07-21 17:01:52 · 3275 阅读 · 0 评论 -
SQL优化案例-1
只是一个简单的案例,但是是真实案例,而且比较常用,还是值得收藏的。原创 2015-10-08 17:15:37 · 1001 阅读 · 0 评论 -
SQL Server书签查找
当优化器所选择的非聚簇索引只包含查询请求的一部分字段时,就需要一个查找(lookup)来检索其他字段来满足请求。对一个有聚簇索引的表来说是一个键查找(key lookup),对一个堆表来说是一个RID查找(RID lookup)。这种查找即是——书签查找。转载 2015-09-17 23:27:27 · 1002 阅读 · 0 评论 -
SQL Server: SELECT * 的真相: 索引覆盖(index coverage)
SELECT * 将造成表/索引扫描SELECT * 的最大问题是将影响查询计划。SQL Server主要使用索引去查询你需要的数据,当索引包括所有的你请求查询的字段,SQL Server将不需要去在表中查询。这个概念称做索引覆盖。在上面的例子中,第一个查询结果是在聚集索引扫描中,反过来,第二个例子使用了更多更有效率的索引扫描。在这个案例中,索引扫描比聚集索引扫描快100倍。转载 2015-09-17 23:35:21 · 2312 阅读 · 0 评论 -
SQL Server 三大物理连接算法(嵌套,合并,哈希)的IO成本总结
1. Nested Loop Join(嵌套循环联结) 算法: 其思路相当的简单和直接:对于关系R的每个元组 r 将其与关系S的每个元组 s 在JOIN条件的字段上直接比较并筛选出符合条件的元组。写成伪代码就是: 代价: 被联结的表所处内层或外层的顺序对磁盘I/O开销有着非常重要的影响。而CPU开销相对来说影响较小,主要是元组读入内存以后(in-memory)的开销,是 O (n * m)转载 2015-09-17 11:42:36 · 1434 阅读 · 0 评论 -
嵌套循环连接(Nested Loops), 合并联接(Merge), 哈希联接(Hash)的适用情况
1.嵌套循环连接(Nested Loops)适用范围两个表, 一个叫外部表, 一个叫内部表.如果外部输入非常小,而内部输入非常大并且已预先建立索引,那么嵌套循环联接将特别有效率。关于连接时哪个表为outer表,哪个为inner表,我发现sql server会自动给你安排,和你写的位置无关,它自动选择数据量小的表为outer表, 数据量大的表为inner表。2.合并联接(Merge)指两个表在on的过滤条件上都有索引, 都是有序的, 这样, join时, sql server就会使用Merg转载 2015-09-17 23:43:27 · 2358 阅读 · 0 评论 -
SQL Server中的三种物理连接图文解析:Loop Join,Merge Join,Hash Join
在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge Join,Hash Join这三种物理连接中的一种。理解这三种物理连接是理解在表连接时解决性能问题的基础,下面我来对这三种连接的原理,适用场景进行描述。转载 2015-09-17 23:17:12 · 1253 阅读 · 0 评论 -
SQL server 内部实三种类型的物理连接运算:Merge join、Hash join、Nested loop join对比分析
SQL server 内部实现了三种类型的内连接运算,大多数人从来没有听说过这些连接类型,因为它们不是逻辑连接也很少被用于代码中。那么它们什么时候会被用到呢?答案是要依情况而定。这就意味着要依赖于记录集和索引。查询优化器总是智能的选择最优的物理连接类型。我们知道SQL优化器创建一个计划开销是基于查询开销的,并依据此来选择最佳连接类型。 那查询优化器究竟是怎样从内部选择连接类型的呢? SQLServer在内部为查询优化器对连接类型的选择实现了一些算法,让我们来看下面的一些练习示翻译 2015-09-17 22:11:01 · 942 阅读 · 0 评论 -
SQL Server中扫描(scan)和查找(seek)这两种算法的区别
SQL SERVER使用扫描(scan)和查找(seek)这两种算法从数据表和索引中读取数据。这两种算法构成了查询的基础,几乎无处不在。Scan会扫描并且返回整个表或整个索引。 而seek则更有效率,根据谓词(predicate),只返索引内的一个或多个范围内的数据。转载 2015-09-17 22:52:11 · 3179 阅读 · 0 评论 -
SqlServer执行计划
阅读目录开始SQL Server 查找记录的方法SQL Server Join 方式更具体执行过程索引统计信息:查询计划的选择依据优化视图查询推荐阅读-MSDN文章对于SQL Server的优化来说,优化查询可能是很常见的事情。由于数据库的优化,本身也是一个涉及面比较的广的话题, 因此本文只谈优化查询时如何看懂SQL Server查询计划。毕竟我对SQL Server的认识原创 2015-12-22 09:43:49 · 1261 阅读 · 0 评论