如何最大限度提高数据库速度(vb与sql server)?

yjmking 2001-10-04 03:04:58
...全文
147 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjmking 2001-10-05
  • 打赏
  • 举报
回复
不错,感觉有收获
progame 2001-10-04
  • 打赏
  • 举报
回复
可能ORACLE中这样会好些,但我感觉在SQL SERVER中触发器实现起来方便点

但我确实对触发器存在一种恐惧,总感觉像一把双刃剑
KingSunSha 2001-10-04
  • 打赏
  • 举报
回复
如果是2层结构, 我也不大用触发器. 基本上是在存储过程中控制
比如,通常用TRIGGER来控制自增字段,
CREATE TRIGGER MYTRIGGER
BEFORE INSERT ON MYTABLE
FOR EACH ROW
BEGIN
SELECT SEQ_ID.NEXTVAL INTO :NEW.ID FROM DUAL;
...
END;

但我会更愿意在存储过程中写(因为几乎所有表的纪录添加/修改/删除都是由过程来完成的):
CREATE PROCEDURE ADDNEW
(NEWVAL MYTABLE%ROWTYPE
ORA_STAT OUT VARCHAR2)
IS
BEGIN
INSERT INTO MYTABLE
VALUES (SEQ_ID.NEXTVAL, NEWVAL.FIELD2,NEWVAL.FIEL3, ....);
ORA_STAT := 'SUCCESS';
EXCEPTION
WHEN ...
ORA_STAT := SQLERRM;

END ADDNEW;
progame 2001-10-04
  • 打赏
  • 举报
回复
你是说使用中间层来启动规则

如果只是两层结构呢,我想触发器还是有存在的必要性的

比如数据的完整性,有时候靠关联是不够的
KingSunSha 2001-10-04
  • 打赏
  • 举报
回复
在触发器中调用存储过程不是不可以, 但是在ORACLE中对触发器有种种限制, 主要是因为数据完整性的问题.
触发器的原则是越简单越好,甚至我现在已经基本不用触发器了. 在存储过程或者中间层中完全可以描述所有的逻辑, 而且维护起来方便.
progame 2001-10-04
  • 打赏
  • 举报
回复
弱水兄,是否可以这样,在触发器中调用存储过程 

KingSunSha 2001-10-04
  • 打赏
  • 举报
回复
我不大喜欢用触发器, 比较难调试, 而且出错信息不完整, 很难维护.
宁可写成存储过程.
yjmking 2001-10-04
  • 打赏
  • 举报
回复
谢谢,大家可以讨论一下有关触发器的问题
progame 2001-10-04
  • 打赏
  • 举报
回复
如果实在太多,则分批取出
yjmking 2001-10-04
  • 打赏
  • 举报
回复
如:要从服务器查询出符合条件的记录,但是返回值太多,如何改进?
KingSunSha 2001-10-04
  • 打赏
  • 举报
回复
progame(呵呵呵(傻笑中。。。) 说得不错, 关于这个问题可以写好几本书,象服务器的优化/代码优化/通讯优化...

还是提一些比较具体的问题吧, 举一两个例子来讨论
progame 2001-10-04
  • 打赏
  • 举报
回复
问题太大了
多直接执行SQL语句
多使用存储过程
建立索引和视图
.........

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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