你的位置:首页 > 软件开发 > 数据库 > 通过手动创建统计信息优化sql查询性能案例

通过手动创建统计信息优化sql查询性能案例

发布时间:2016-04-24 19:00:08
来源于工作中的一个实际问题,这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选择合理的执行计划导致性能低下的情况我这里把问题简单化,主要是为了说明问题如下一张业务表,主要看两个“状态”字段,BusinessStatus1 和 B ...

通过手动创建统计信息优化sql查询性能案例

来源于工作中的一个实际问题,

这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选择合理的执行计划导致性能低下的情况

我这里把问题简单化,主要是为了说明问题

如下一张业务表,主要看两个“状态”字段,BusinessStatus1 和 BusinessStatus2create table BusinessTable(  Id int identity(1,1),  Col2 varchar(50),  Col3 varchar(50),  Col4 varchar(50),  BusinessStatus1 tinyint,  BusinessStatus2 tinyint,  CreateDate Datetime)GO--向测试表中写入数据:begin tran  declare @i int  set @i=0  while @i<500000  begin    insert into BusinessTable values (NEWID(),NEWID(),NEWID(),1,10,GETDATE()-RAND()*1000)    insert into BusinessTable values (NEWID(),NEWID(),NEWID(),1,20,GETDATE()-RAND()*1000)    insert into BusinessTable values (NEWID(),NEWID(),NEWID(),1,30,GETDATE()-RAND()*1000)        insert into BusinessTable values (NEWID(),NEWID(),NEWID(),2,20,GETDATE()-RAND()*1000)    insert into BusinessTable values (NEWID(),NEWID(),NEWID(),2,30,GETDATE()-RAND()*1000)    insert into BusinessTable values (NEWID(),NEWID(),NEWID(),2,40,GETDATE()-RAND()*1000)    insert into BusinessTable values (NEWID(),NEWID(),NEWID(),3,30,GETDATE()-RAND()*1000)    insert into BusinessTable values (NEWID(),NEWID(),NEWID(),3,40,GETDATE()-RAND()*1000)    insert into BusinessTable values (NEWID(),NEWID(),NEWID(),3,50,GETDATE()-RAND()*1000)    set @i=@i+1  endcommit--插入一条特殊数据,也就是实际业务场景中:insert into BusinessTable values (NEWID(),NEWID(),NEWID(),3,10,GETDATE()-RAND()*1000) 

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:通过手动创建统计信息优化sql查询性能案例

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。