请问各位高手,SQL SERVER 2000使用insert插入一条记录,最快耗时多少?(内详)
我用VC+ADO编程,向SQL SERVER 2000中插入记录,使用SQL语言。
每条记录8个字段,每个字段不超过20字节。
数据源来自一个数据采集卡,保存在内存中的一个数据缓冲区中(也可以理解为一个结构体数组),数据来源的速度非常快,我想知道写入数据库的时间最快能到多少?
我现在测试的结果是:一次向数据库中插入50条记录,循环插入,测试1000条,大概平均1毫秒可以插入3条记录。这个速度算合理吗?
如果我希望能在1毫秒内插入15条左右的记录,有办法实现吗?
------解决方案--------------------何不一次插入多条记录(不用循环)?去除表结构影响性能的设计(如索引)
------解决方案--------------------速度问题是多方面的,服务器的配置,系统资源正在使用的情况都要考虑
如果只是insert,表可以不要索引,因为索引会降低速度,可是表能不建索引吗?这些问题都很矛盾,不能只考虑插入的速度
------解决方案--------------------一次插一条显然不是好办法. LZ可以考虑两点: 1. 一是建一个buffer, 把要插入的数据先放在buffer里, 攒足一定的数据(我一般是1000条, 可以根据具体情况调整), 然后集体插入. 2. 是用多线程(multi-thread)和异步通讯(unsynchronization)办法, 这样可以让插入和数据采集同步进行.
------解决方案--------------------如果查询数据不要求非常及时,不建议实时插入,使用批量插入。
服务器配置,系统资源配置,表中数据访问频度,表中约束、索引多少等等都会影响速度。
------解决方案--------------------呵呵
是啊,为什么一次就写一条?不批量写呢?
而且LZ的数据很小。
至于影响写速度,无非就是索引、约束、触发器等。