从大表中仅提取一定量的行

时间:2014-02-06 07:07:04

标签: ssis etl pervasive-sql

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

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

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

我的查询没有其他谓词我需要添加,除非所有这些列的总和&lt;&gt; 0

选项:

  • 取所有5,000,000行(大约需要2.5小时 - 不可行)
  • 添加谓词,例如where size1_stock + size2_stock .. <> 0(实际上并不快)
  • 在所有15列上添加一个索引(这会起作用吗?我认为创建索引会花费太长时间,尽管可能在迁移日之前完成)

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

任何建议都会很棒!

0 个答案:

没有答案