急!!!
SQL Server2005中有几张表存放用户数据,通过Account字段区分不同用户的数据.今天将一个用户的一部分数据分配到另一个用户的数据库中,实际上就是将需要修改的数据的Account字段修改一下,SQL语句如下:
update tableA set account = '001'
where account = '002'update tableB set account = '001'
where account = '002'update tableC set account = '001'
where account = '002'修改完成后检查数据时发现一个奇怪问题:
使用下面的SQL语句查询速度很慢(语句1)
select * from tableA
left join tableB on tableA.id = tableB.id
where tableA.Account = '001'但是使用下面的SQL语句查询速度正常,并且比上的语句快N倍(语句2)
select * from tableA
left join tableB on tableA.id = tableB.id
where tableA.Account = '002'我检查了两个SQL语句的执行计划居然不一样!SQL语句几乎是一样的为什么执行计划不一样?
另外我尝试重建了相关表的索引,结果语句1是比重建前还慢些,语句2.不知道大家时候遇到过这样的问题,给点解决思路谢谢!  急!!!

解决方案 »

  1.   

    1、两个SQL语句的执行计划居然不一样--》》这个很正常,sql会根据数据量,表的结构等等来调整查询执行计划2、重新建立索引试试
      

  2.   

    SQLSERVER是基于成本的
    Account = '001' 的记录量,点总记录的比例,分布都会引起的
      

  3.   

    你把所有表都针对Account建立索引.
      

  4.   

    需要尝试2005中更新表统计信息工具能否解决该问题
    例如 UPDATE STATISTICS tablename
         GO