第一次通过索引视图优化SQL语句,以及遇到的一些问题,记录一下。语句分析最近开发递交过来一个查询统计的SQL,说是性能有问题,原本执行需要4-5秒钟,这个业务本身对性能要求又比较critical,期望 ... 阅读全文
本质原因在于:SQL Server 统计信息只包含复合索引的第一个列的信息,而不包含复合索引数据组合的信息来源于工作中的一个实际问题这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选择合 ... 阅读全文
最近发现一个分页查询存储过程中的的一个SQL语句,当聚集索引列的排序方式不同的时候,效率差别达到数十倍,让我感到非常吃惊由此引发出来分页查询的情况下对大表做Clustered Scan的时候不同情况 ... 阅读全文
前提 本文仅讨论SQL Server查询时 对于非复合统计信息,也即每个字段的统计信息只包含当前列的数据分布的情况下 在用多个字段进行组合查询的时候,如何根据统计信息去预估行 ... 阅读全文
为什么要写统计信息 最近看到园子里有人写统计信息,楼主也来凑热闹。 话说经常做数据库的,尤其是做开发的或者优化的,统计信息造成的性能问题应该说是司空见惯。 当然解决办法也并非一成不变,“一招鲜吃 ... 阅读全文
先看常用的一种表结构设计方式那么可能会遇到一种典型的查询方式,主子表关联,查询子表中的某些(或者全部)Key点对应的Value,横向显示(也即以行的方式显示这种查询方式很明显的一个却显示多次对字表查询(暂时抛开索引 ... 阅读全文
问题背景在写SQL Server存储过程中,如果存储过程中定义了临时表有些人习惯在存储过程结束的时候一个一个显式地删除过程中定义的临时表(drop table #tName),有些人又没有这个习惯阅读全文
经常听Oracle的同学说起来物化视图,物化视图的作用之一就是可以实现查询重写,听起来有一种高大上的感觉 SQL Server也有类似于Oracle物化视图的功能,只不过叫做索引视图。 说实 ... 阅读全文
简介存储过程优化的重点和难点在于如何找到存储过程中最耗时的部分。尤其对于很长的存储过程,或者多层嵌套调用的存储过程,难度会更大。大致有两种情况慢在自身SQ慢在执行其他嵌套存储过程/函数/link的SQ ... 阅读全文
简介存储过程可能包含单个查询,也可能包含整个查询系列。在后一种情况下,您将看到多个执行计划,但是处理每个计划的方式与其他任何执行计划没有区别。在运行存储过程的时候,勾选“包括实际的执行计划(Ctrl+ ... 阅读全文
简介SQL Server 2012中(包括之前的版本),因表中数据变化,但统计信息尚未更新的情况下,对于直方图中没有覆盖到的谓词过滤时,sqlserver总是预估为1行SQL Server 2014和 ... 阅读全文
什么是等待简单说明一下什么是等待当应用程序对SQL Server发起一个Session请求的时候,这个Session请求在数据库中执行的过程中会申请其所需要的资源比如可能会申请内存资源,表上的锁资 ... 阅读全文