易截截图软件、单文件、免安装、纯绿色、仅160KB

奇怪SQL的问题,请帮忙下谢谢!

急!!!
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、两个SQL语句的执行计划居然不一样

--》》这个很正常,sql会根据数据量,表的结构等等来调整查询执行计划

2、重新建立索引试试




另外我尝试重建了相关表的索引,结果语句1是比重建前还慢些,语句2

--》》重建索引后,也许还和数据的分布有关系。

SQLSERVER是基于成本的
Account = '001'


相关问答:

SQL语句效率问题 - 其他数据库开发 / 其他数据库

大家帮忙看看这2个sql语句哪个查询的速度更快点。谢谢帮忙。比较着急。在做性能测试。
select * from
  表A LEFT OUTER JOIN 表B ON (表A.id || ' ' =表B.id) ,表C , 表D, 表E
Where其他条件
select * ......

sql 截取字符串

我要得到一个字符串如:
sdfk|||sgts
sdfsfd|||rgreg
wrfw|||sefw
就是要得到|||后面的字符串,有什么函数吗?怎么用呢?谢谢!
SQL code:
select
right(col,len(col)-charindex('|||',col)-2)
f ......

多表关联查询的 sql写法 - Oracle / 基础和管理

大家好,我最近维护一个项目,100多个表
只能用jdbc直连
遇到了多个表 关联 查询的情况 请大家指教
比如
student(studentid,classid)
class(classid,classname)
class_teacher(classid,teacherid)这个是中间表 ......

oracle中一个SQL语句的区别 - Oracle / 基础和管理

Oracle中SQL语句中
drop table 表名 cascadeconstraints

drop table 表名 cascadeconstraint
有什么区别?
constraint和constraints在oracle中是一样使用的
官方建议使用constraint

引用
constraint和c ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号