• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

谁能给我优化这句SQL语句?现在需要花费1分51秒,提高一秒给十分!!!

wkoji 2003-02-21 11:02:51
UPDATE tblExlTempYear
SET tblExlTempYear.GDQC = tblExlTempMonth.GDQC
FROM tblExlTempYear,tblExlTempMonth
where tblExlTempMonth.GDXM=tblExlTempYear.GDXM and tblExlTempMonth.TXDZ=tblExlTempYear.TXDZ
...全文
69 点赞 收藏 25
写回复
25 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wkoji 2003-02-23
我的印象里别名的用法应该是
UPDATE tblExlTempYear
SET GDQC = a.GDQC
FROM tblExlTempYear,tblExlTempMonth as a
where a.GDXM=tblExlTempYear.GDXM and a.TXDZ=tblExlTempYear.TXDZ。
我现在也确实是证券业的新手,不过以上主要是在讨论SQL语句的用法
我还只是个小兵,大力说的什么数据库设计上的优化,硬件的改善之类的都不是我能决定或者改变的,我只能尽力把我能写的SQL语句写的效率高一点。
不管怎么样,多谢各位给的意见,所以我都给分了,尤其是对我提出了批评的
回复
JQQQ 2003-02-23
语句是最简练了, 但不代表是最优化. 最好能讲明表和字段的含意, 以及数据量, 这样才能得到最优化的SQL语句.
回复
SunWinter 2003-02-22
索引可提高查询速度,但会降低数据更新速度
回复
brandyChen 2003-02-22
支持大力!!!
回复
Rewiah 2003-02-22
to 大力:

--------------------------------------------------------------------
UPDATE tblExlTempYear
SET tblExlTempYear.GDQC = tblExlTempMonth.GDQC
^^^^^^^^^^^^^^^
FROM tblExlTempMonth a
----^^少了一个给一分!哈哈。。
where a.GDXM=tblExlTempYear.GDXM and a.TXDZ=tblExlTempYear.TXDZ

给tblExlTempYear表的GDXM和TXDZ加非簇索引
给tblExlTempMonth表的GDXM和TXDZ加非簇索引

-------------------------------------------------------------------

你原来的写法确实是错的,我标有^^的地方

错了就是错了,不要说楼主乱说

回复
pengdali 2003-02-22
to 楼主:

UPDATE tblExlTempYear
SET GDQC = a.GDQC
FROM tblExlTempMonth a
where a.GDXM=tblExlTempYear.GDXM and a.TXDZ=tblExlTempYear.TXDZ

你是sqlserver吗?你没试一下不要乱说呀!
回复
Niguna 2003-02-22
大力支持大力!!!!
楼主可能是证券业内的新手~
学习ING......
回复
pengdali 2003-02-22
乘长风:哈哈。。是我高估了楼主!我以为楼主能知道我的主要意思!如果知道楼主是应该会自己改的!就是一个别名嘛!哈哈。。

楼主:我是在那里写的注释是主要强调“少了写几个字符”的!其实这没什么区别的!如果要优化只能对数据表设计优化!如果你的设计已经达到范式且建立了足够的索引那你升级硬件设备可以得到教好的效果,单从语句上已经是最简了!


UPDATE tblExlTempYear
SET GDQC = a.GDQC
FROM tblExlTempMonth a
where a.GDXM=tblExlTempYear.GDXM and a.TXDZ=tblExlTempYear.TXDZ
回复
wkoji 2003-02-22
这个世界还是有好人给我说理的:-)
回复
流星尔 2003-02-21
sql语句语法已经简练到底了。只有从索引上想办法。或者数据库的设计上想办法。

比如这个数据量是不是有必要全部的都更新一遍。还是只要更新指定条件的就行。

第二,数据量如此大。是不是需要转移到另一个历史数据表中。已提高每次查询更新速度。
回复
CABO 2003-02-21
UPDATE tblExlTempYear
SET tblExlTempYear.GDQC = tblExlTempMonth.GDQC
FROM tblExlTempMonth
where tblExlTempMonth.GDXM=tblExlTempYear.GDXM and tblExlTempMonth.TXDZ=tblExlTempYear.TXDZ

这样写呢?
回复
CABO 2003-02-21
按道理不会这么慢的吧?
数据量好大吗?
为什么会没有条件的全部更新?
回复
topmonkey 2003-02-21
还是考虑添块CPU吧。
回复
wkoji 2003-02-21
加索引之后现在需要1:43。提高了8秒,不过算上执行加索引还得几秒。
基本上就没得提高了。
回复
wgy2008 2003-02-21
加个索引
回复
wkoji 2003-02-21
除了加索引之外别无他法了吗?
语句上有没有还可以优化的办法?
谁能给些SQL语句优化的具体例子!!!
回复
CrazyFor 2003-02-21
tblExlTempMonth.GDXM
tblExlTempYear.GDXM
tblExlTempMonth.TXDZ
tblExlTempYear.TXDZ
加索引
回复
Rewiah 2003-02-21
1、加索引:
tblExlTempYear(GDXM,TXDZ)
tblExlTempMonth (GDXM,TXDZ)

2、删除误用数据

3、转移过是数据

4、加服务器内存,升级服务器

5、升级网络系统

6、别无他法(玩笑)
回复
Rewiah 2003-02-21
1、加索引:
tblExlTempYear(GDXM,TXDZ)
tblExlTempMonth (GDXM,TXDZ)

2、删除误用数据

3、转移过时数据

4、加服务器内存,升级服务器

5、升级网络系统

6、别无他法(玩笑)
回复
ayhfxd 2003-02-21
老大,看不懂你的结构!写清楚些
回复
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-02-21 11:02
社区公告
暂无公告