SQL语句优化

VeryOldMan 2004-07-24 11:28:47
我有一系统,系统中有许多MS SQL的存储过程,其SQL语句实在需要动动手术,敬请各位谋划谋划、指点指点。

以下就是一段典型代码:

CREATE PROCEDURE Proc_Cal_XX_Fee
@Garden varchar (5),
@Year smallint,
@Month tinyint
AS
begin
--更新某某费用
Update tbl_A Set yfje=A.dtf From
(Select yzxx.hzbh, (dtf*ISNULL(ftxs,0)) AS dtf From yzxx, dtf, dtft, zfxx Where yzxx.lh=dtf.lh AND nf=@Year AND yf=@Month
AND dtf.xqbh=@Garden AND yzxx.xqbh=@Garden AND yzxx.hzbh=zfxx.hzbh AND dtft.lc=zfxx.lc AND yzxx.lh=dtft.lh) A,
(Select sfxmid From SFXM Where mc like '%某某费用%') B
Where tbl_A.hzbh=A.hzbh AND tbl_A.sfxmid=B.sfxmid
AND nf=@Year AND yf=@Month
end

其中涉及各表的大致结构如下:
tbl_A (hzbh, nf, yf, sfxmid, yfje, ...) //此表保存用户各月各项费用数据
yzxx(hzbh, xm, xb, lh, ....) //用户的姓名,楼层等
zfxx(hzbh, lh, lc, ...) //各房的面积、楼层等
dtft(lh, lc, ftxs, ...) //此表保存各楼层的分摊系数
dtf(lh, nf, yf, dtf, ...) //此表保存每月费用
SFXM(sfxmid, mc, ...) //此表保存各项费用编号与名称等

此类存储过程关联的表过多,作笛卡儿积后所需空间必定不小。
请问高手如何做优化,以提高速度。
...全文
152 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pressman 2004-07-29
  • 打赏
  • 举报
回复
如果SELECT用得多,建立索引是个好办法。
pressman 2004-07-29
  • 打赏
  • 举报
回复
优化SQL语句
一。尽量避免用*号 ,控制传输的数据不是太大。
二。像SFXM(sfxmid, mc, ...) //此表保存各项费用编号与名称等
编号尽量用INT,而不用VARCHAR,这样查询起来更快
三。90/10规则,把你的主要时间放在重要的10上面而不是90上面
wychero 2004-07-29
  • 打赏
  • 举报
回复
你写的 SQL 语句对了吗?
VeryOldMan 2004-07-28
  • 打赏
  • 举报
回复
我UP
qizhanfeng 2004-07-24
  • 打赏
  • 举报
回复
Up
pokemonFK 2004-07-24
  • 打赏
  • 举报
回复

做个视图用来查询,

再用UPDATE更新
longtusoft 2004-07-24
  • 打赏
  • 举报
回复
重写一个,用触发器试试.
jiezhi 2004-07-24
  • 打赏
  • 举报
回复
不是所需空间的问题,而是连接过多后,分析sql的资源耗费会大大增加。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧