我要向数据库中插入一千万条以上的记录,请高手指教

我要向数据库中插入一千万条以上的记录,请高手指教,第1张

你是什么数据库,MSSQL?
想来想去唯有用储存过程来 *** 作效率可能才是比较高的
或着要插入的记录比较有规律可以写到电子表格里
再用通过工具DTS的设计器进行导入
如果你对英文还行的话建议用DataFactory这个软件
支持对目前各种大中型数据库进行 *** 作,
可以随机添加,或从其它文件中导入或指定值等,
而且执行速度也很快
希望对你有用

理论上上万条数据同时插入一个数据库是不可能的,因为数据库进行 *** 作时候会锁表,每个任务完成后在进行下个任务,其实所谓的并发其实也是排队按顺序执行的如果是向同一个表中插入数据的话可以
insert into table (colum1,column2)values(data1,data2),(data2,data3),(data4,data5)这样用一个连接插入是最快的方法

$sql = "INSERT INTO `TABLE`(name,password) VALUES('张三','123'),('李四','123'),('王五','123'),('赵六','123'),('田七','123')";安照上面的方式插入数据库是效率更高,速度更快 望采纳 Thx

一次性插入1000条数据比一条一条的插入速度会提升N倍,主要技巧就是在写SQL的上面,没啥难度
insert into table1 value (v1, v2, v3), (x1,x2,x3),

而不是
insert into table1 value (v1, v2, v3);
insert into table1 value (x1,x2,x3);
这样一条一条的插入
希望你能明白

我们先探讨非高并发量的实现。

对于查询频次较高的字段,加上索引

加索引注意事项:1对那些字符内容较长的最好不要加索引2按照官方文档,单表加的索引不要超过16个,索引的长度不要超过256个字节。随意加索引,会给数据维护增加负担

其实,可以引入分区

分区注意事项:1常见的分区类型有range,list,hash,key等。用的比较多的就是range分区。2对于初始建立索引的时候,我们往往会忽视一个前提条件,导致添加失败报错。这里的前提是,如果表是有主键的,分区的键和主键不是同一个,那么分区的键也必须是主键。

引入分区后,数据写入时,数据库会自动判断写入哪个分区

对于并发量较高的,我们除了做上面的 *** 作外,就要考虑分库分表或者采用一主多从的方式。

未来我相信这类问题需要采用NewSQl这类数据库来解决,如TiDb等,此时,我们将不必考虑数据分区的问题,而且可以做到数据水平无限扩展,和热点数据的动态分布。

有declare语句是可以的
比如创建了一个表a:
create table a
( aid int identity(1,1) not null Primary(Key),
adata int)
插入数据:
declare @n int
set @n = 0
while @n < 2000
begin
set @n = @n+1
insert into a(adata) values(@n)
end
自己改改就可以了

你这个语句已经是最简单了,数量只能用时间来换了,如果你想优化的,可以考虑建一个时表保存:
select productp_val from product where productp_dom in( select qb_hy_companyqy_website from qb_hy_company)
然后再执行插入 *** 作:
insert into qb_hy_company(qb_hy_companyqy_pro_ser) select productp_val from product


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10552728.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-09
下一篇2023-05-09

发表评论

登录后才能评论

评论列表(0条)

    保存