奇怪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'
相关问答:
大家帮忙看看这2个sql语句哪个查询的速度更快点。谢谢帮忙。比较着急。在做性能测试。
select * from
表A LEFT OUTER JOIN 表B ON (表A.id || ' ' =表B.id) ,表C , 表D, 表E
Where其他条件
select * ......
我要得到一个字符串如:
sdfk|||sgts
sdfsfd|||rgreg
wrfw|||sefw
就是要得到|||后面的字符串,有什么函数吗?怎么用呢?谢谢!
SQL code:
select
right(col,len(col)-charindex('|||',col)-2)
f ......
大家好,我最近维护一个项目,100多个表
只能用jdbc直连
遇到了多个表 关联 查询的情况 请大家指教
比如
student(studentid,classid)
class(classid,classname)
class_teacher(classid,teacherid)这个是中间表 ......
Oracle中SQL语句中
drop table 表名 cascadeconstraints
与
drop table 表名 cascadeconstraint
有什么区别?
constraint和constraints在oracle中是一样使用的
官方建议使用constraint
引用
constraint和c ......