我正在编写一个程序来生成海量(约 10 亿条记录,分布在约 20 个表中)的数据量并填充 SQL Server 中的表。这是跨越多个表的数据,可能具有多个外键约束,以及多个类似“枚举”的表,其值的分布也需要看似随机,并且经常从其他表中引用。这导致了很多ORDER BY NEWID()
类型代码,这对我来说似乎很慢。
我的问题是:哪种策略会更高效:
在 SQL Server 中生成和插入数据,使用基于集合的操作和一堆
ORDER BY NEWID()
来获得随机性在客户端生成所有数据(应该使从枚举表中选择随机值等操作更快),然后将数据导入 SQL Server
我可以从这两种策略中看到一些积极和消极的一面。显然,随机数据的生成在客户端会更容易并且可能更高效。但是,将该数据发送到服务器会很慢。否则,导入数据并将其插入基于集合的操作中的规模应该相似。
有没有人做过类似的事情?