我在一个普遍(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 列上添加一个索引(这行得通吗??我相信创建索引需要很长时间,尽管也许可以在迁移日之前完成)
不幸的是,清除表不是一种选择——供应商说这些记录需要保留。
任何建议都会很棒!