Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 生成2个范围之间的1亿条记录并插入_Sql Server_Vb.net - Fatal编程技术网

Sql server 生成2个范围之间的1亿条记录并插入

Sql server 生成2个范围之间的1亿条记录并插入,sql-server,vb.net,Sql Server,Vb.net,我有一个请求,为一个处理空中充值卡的仓库开发一个库存系统。根据要求,他们可以将序列号加载到数据库中,该数据库可以是至少1亿条个人记录。我需要得到一个可以接受两个字符串的函数,并使用它生成该范围内的单个记录,如下所示。但我知道这不是一种生成和插入数据库的有效方法,请帮助 startserial : 99092110000000 endserial : 99092119999999 代码: 正如评论中所提到的,使用理货单。不要使用rCTE来实现这一点,正如我所展示的,它们的速度非常慢,请使用基

我有一个请求,为一个处理空中充值卡的仓库开发一个库存系统。根据要求,他们可以将序列号加载到数据库中,该数据库可以是至少1亿条个人记录。我需要得到一个可以接受两个字符串的函数,并使用它生成该范围内的单个记录,如下所示。但我知道这不是一种生成和插入数据库的有效方法,请帮助

startserial : 99092110000000
endserial   : 99092119999999
代码:


正如评论中所提到的,使用理货单。不要使用rCTE来实现这一点,正如我所展示的,它们的速度非常慢,请使用基于集合的方法和行数@CharlieFace还为您提供了一个关于如何在他们的评论中创建统计的链接,该链接由伊兹克·本·甘(Itzik Ben Gan)撰写

简言之,如果您需要定义起始值和结束值,那么除了顶部和一些基本的添加之外,这几乎不需要更改。对于多达10000行的计数,我会这样写:

声明@Start int=700, @End int=9874; 以N作为 选择N 来自valuesnall,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULLNN, 算作 选择顶部@End-@Start+1 通过选择NULL+@Start-1作为I,在订单上显示行号 从N N1、N N2、N N3、N N4到10000行 选择I 从理货;
如果需要更多的行,那么只需在CTE计数中向N添加更多的交叉连接即可。尽管是100万批次,但你最好还是做1000万批次。

你想要的是所谓的计数。有很多关于如何创建这些的示例。SQL Server Tally Table->don't use See也可能是最好的示例,作者:Itzik Ben GanGood链接到最近来自Itzik-esp的讨论。如果很快需要1亿个值,尽管30秒对于最坏的情况来说仍然很短。
Private Sub Scanin(startserial As String, Endserial As String)
    Dim serialnum As Decimal : Dim qry As String

    serialnum = CDec(startserial)

    For inc As Decimal = serialnum To CDec(Endserial)
        qry = "Insert into BatchTemp(SerialNumber) VALUES (@a)"
        cmd = New SqlCommand(qry, con)
        cmd.Parameters.AddWithValue("@a", serialnum)

        cmd.ExecuteNonQuery()

        serialnum += 1
    Next
End Sub