跟大家讨论一个关于向SQLSERVER2000插入记录的问题(100分)

  • 主题发起人 主题发起人 男生111
  • 开始时间 开始时间

男生111

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好,我有一个关于SQLSERVER2000的问题,希望大家都来讨论一下<br>我有两台机器一台机器是通讯服务器,一台是数据服务器,每天数据从下位机通过SOCKET采集到通讯服务器,形成一些2进制的文本文件,同时将文件名保存到数据服务器中的数据库中,<br>在数据服务器有一个APPLICATION,其中有两个线程,一个是监视数据库中的文件名表,如果发现有记录,立即去通知另外一个线程,到通讯服务器中文本文件所在的目录中找到相应的文件,将其存入数据库中,同时删除文件名表中相应的记录,<br>我所遇到的问题是当我导入数据时,我为了防止出现重复的数据都是先用SQL语句DELETE,将数据库中主键相同的记录删除然后在INSERT,可是DELETE时候非常慢,我用的是ADOQUERY控件,都是标准的DELPHI语句,但我如果用SQLSERVER的查询分析器去执行同样的语句就很快,不知道这是为什么,<br>另外如果您有更好的解决这个问题的方法请告诉我咱们一起讨论一下,谢谢
 
使用存储过程来完成DELETE INSERT试试
 
用事件呀 &nbsp;要么全做要么全不做<br>还有‘每天数据从下位机通过SOCKET采集到通讯服务器 ’<br>你的下位机是什么机器 怎么使用SOCKET采集???
 
主键应该有unique约束的吧?干嘛要这样?<br>慢的话可以建索引,合理设置簇集索引(一般簇集索引都是建在主键上的,很多时候没必要)。
 
在触发器中调用删除语句
 
大家好,我前两天出差没看到大家的评论,很抱歉<br>我是在DELPHI中利用一个FOR循环将临时文件中的数据进行导入的,<br>我的步骤是:<br>1.将数据库中主键相同的记录删除.<br>2.在FOR循环中,先读临时文件中,然后将每个临时文件中的数据进行读入<br>我不能够使用存储过程,因为如果使用存储过程如何在FOR循环中进行使用,<br>我实验过编了一个存储过程就象几位大哥说的,先DELETE,然后再INSERT,但是由于我读临时文件是个循环,所以程序就报错了,不知道大家所说的是如何,<br>还是光把DELETE部分放在存储过程中,难道这样就快了吗
 
后退
顶部