将 280,000 条记录的大数据 table 的每个变体插入另一个 table 的更快方法是什么?
What is a faster way to insert every variation of a large datatable of 280,000 records into another table?
我有一个 table LocationID,纬度,经度 280,000 条记录。
我想将匹配项的每个变体插入新的 table。
例如,对于记录 A、B 和 C,我最终会得到 AB、BC 和 AC
我的 TSQL 查询是
INSERT INTO Distances (ID1, ID2, Distance)
SELECT a1.ID, a2.ID, 0
FROM Location a1
JOIN Location a2 ON a1.ID <> a2.ID
然后我希望 运行 另一个查询将使用工作标量函数以及纬度和经度从 0 更新距离列。但是,仅插入语句就需要 40 分钟以上才能 运行.
我想我可以将位置 table 保存到一个更快的数据库中(也许是 JsonDB?),但我没有使用其他数据库的经验,所以我不确定哪个数据库最快。
我 运行宁 windows 10 并且更喜欢图形用户界面。
用于处理的数据库必须允许可以对 lat/longs.
进行数学运算的标量样式函数
有什么建议吗?
确保您没有定义索引,并在 table 名称后添加提示 "WITH (TABLOCKX)"。那应该在 table 上给你 "simple logging" 并且应该更快一些。
此外,将计算作为插入的一部分进行。更新如此大的 table 会给你一个巨大的交易日志,甚至可能因为它的大小而失败。在 SQL 服务器上进行大量更新时,创建新的 table 比更新现有服务器更有效,因为插入可以被说服进行简单的日志记录而不是完整的日志记录。
您还可以将 table 的大小减半,因为它实际上是对称的; 运行 连接为“<”而不是“<>”。如果你真的需要两个方向,你可以在之后创建一个视图。
我有一个 table LocationID,纬度,经度 280,000 条记录。
我想将匹配项的每个变体插入新的 table。
例如,对于记录 A、B 和 C,我最终会得到 AB、BC 和 AC
我的 TSQL 查询是
INSERT INTO Distances (ID1, ID2, Distance)
SELECT a1.ID, a2.ID, 0
FROM Location a1
JOIN Location a2 ON a1.ID <> a2.ID
然后我希望 运行 另一个查询将使用工作标量函数以及纬度和经度从 0 更新距离列。但是,仅插入语句就需要 40 分钟以上才能 运行.
我想我可以将位置 table 保存到一个更快的数据库中(也许是 JsonDB?),但我没有使用其他数据库的经验,所以我不确定哪个数据库最快。
我 运行宁 windows 10 并且更喜欢图形用户界面。 用于处理的数据库必须允许可以对 lat/longs.
进行数学运算的标量样式函数有什么建议吗?
确保您没有定义索引,并在 table 名称后添加提示 "WITH (TABLOCKX)"。那应该在 table 上给你 "simple logging" 并且应该更快一些。
此外,将计算作为插入的一部分进行。更新如此大的 table 会给你一个巨大的交易日志,甚至可能因为它的大小而失败。在 SQL 服务器上进行大量更新时,创建新的 table 比更新现有服务器更有效,因为插入可以被说服进行简单的日志记录而不是完整的日志记录。
您还可以将 table 的大小减半,因为它实际上是对称的; 运行 连接为“<”而不是“<>”。如果你真的需要两个方向,你可以在之后创建一个视图。