0

我在一个普遍(btrieve)数据库上有一个遗留系统,该数据库有一个列出产品库存的表。该表有 > 5,000,000 行,但只有 115,000 行的值不是 0。这些是我试图提取到 MSSQL 数据库中的行。

现在,通常我会在 qty 列上放置一个索引并通过说 询问表格where qty <> 0,但是,数量在 15 个单独的列中(size1_stock、size2_stock 等)。

在选择整个表时(作为 MSSQL 中带有 insert into 子句的链接服务器),大约需要 2.5 小时。我需要大大减少执行此操作所需的时间。

除了所有这些列的总和 <> 0 之外,我的查询没有其他谓词需要添加。

选项:

  • 取所有 5,000,000 行(大约需要 2.5 小时 - 不可行)
  • 添加一个谓词,例如where size1_stock + size2_stock .. <> 0(不是真的更快)
  • 在所有 15 列上添加一个索引(这行得通吗??我相信创建索引需要很长时间,尽管也许可以在迁移日之前完成)

不幸的是,清除表不是一种选择——供应商说这些记录需要保留。

任何建议都会很棒!

4

0 回答 0