日期:2014-05-19  浏览次数:20688 次

sql最快能在一个小时写入多少条记录呢?
比如说我要把双色球的17721088注写入到数据库中,用ASP循环将记录写入到数据库中可是每次都写不到10万条就报错了,并且用时也有1个多小时,如果我能把它们都写入到了数据库我又怎么能快速的查询到指定的记录呢?

------解决方案--------------------
都写进数据库有意义吗?
------解决方案--------------------
2方面的问题:
1。ASP的超时设置,不过不管怎么设置估计都不行;
2。硬盘的I/O性能,估计你的服务器不行,或者没有用磁盘阵列;
建议用存储过程来执行,插入到一张单独的表,写完再建立索引。
------解决方案--------------------
我觉得关键问题是楼主是否可以说明你要所有的排列组合的目的
看看有有没有别的办法可以解决

------解决方案--------------------
比如楼主说明为何每次都要计算出来啊?

随机选号?
------解决方案--------------------
通过服务端程序来实现

写个专用存储过程

这样,速度快慢,就取决于你的算法跟服务器性能了

------解决方案--------------------
写入的部分通过存储过程实现
查询通过建立相关索引提高效率

不过。。貌似没有必要这样做,应该在算法上动脑筋。。
------解决方案--------------------
除了跟硬件有关外,其他因素也有很多,
比如你的表有索引或者约束的话,插入会比较慢。
所以可以先删除索引或者约束,插入完之后再建立。
还有日志空间不够也会导致插入失败,可以先收缩日志,或者先备份一下数据库,再执行插入操作。
还有一些设置,比如
比如在插入语句之前加上
set oncount on
也可以减少io。
现在能想到的这些,楼主先试一试。
------解决方案--------------------
对了。不要用asp循环,直接在服务器上运行。
------解决方案--------------------
写存储过程,然后直接在服务器上执行,我最近为了做数据库的一个压力测试,不停执行insert语句,一天两夜后,插入了2500多万条记录,是在一台P4的PC上实现的。
测试是需要注意你的磁盘空间是否够用,因为插入是事务日至将会爆增,如果磁盘空间不够,数据文件和日至文件将会争用磁盘空间,或者会出现事务日至的磁盘分区不够,即便数据文件还有磁盘分区可用也不能完成大量的数据插入。
因此建议,要给日志文件和数据文件各分配足够的磁盘空间,建议把他们放在不同的磁盘分区上(如果有条件应该将他们划分给不同的物理磁盘,如果有多个数据文件最好也应该分散在多个无力磁盘上),这样可以最大限度的利用磁盘空间。
------解决方案--------------------
不要用ASP程序来生成数据。直接用存储过程生成数据并插入就可以了。

只要你的硬盘空间够,普通pc都足够生成几KW的数据。


生成好了以后再加上适当的索引,这样查询才会快
------解决方案--------------------
那么多数据。应该要考虑硬件的性能。表结构的合理性,表创建的合理性
------解决方案--------------------
这样的数据量用DB2或ORACLE会好很多。
用SQL的话,有索引的情况下用存储过程查,只返回一条记录的话,估计在2-30s左右。
------解决方案--------------------
luckyprg(lucky) ( ) 信誉:100 Blog 2007-01-10 18:03:54 得分: 0


这样的数据量用DB2或ORACLE会好很多。
用SQL的话,有索引的情况下用存储过程查,只返回一条记录的话,估计在2-30s左右。
————————————————————————————————————————

楼上的说得也太夸张了吧,我觉得那是因为你没有把索引和查询进行合理的优化,所以才会有那么底的效率的。我最近做的一个测试案例大概2500多万条记录,只返回一条记录,响应的时间在一秒以下,就算清除缓存,让数据库重新创建执行计划,也就是不到5秒。我目前还觉得我的测试可能做的不是很完美,还有近一步优化的可能呢!你怎么就对SQL Server如此的没有信息呢?