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

Ssis 仅从大型表中提取一定数量的行,ssis,etl,pervasive-sql,Ssis,Etl,Pervasive Sql,我在一个普适(btrieve)数据库上有一个遗留系统,该数据库有一个表,列出产品的现有库存。该表有>5000000行,但只有115000行的值不是0。这些是我试图提取到MSSQL数据库中的行 现在,通常我会在qty列上放置一个索引,并通过说查询表格,其中qty 0,但是,数量在15个单独的列中(size1库存、size2库存等) 选择整个表(作为MSSQL中带有insert into子句的链接服务器)大约需要2.5小时。我需要大大减少这样做所花费的时间 除了所有这些列的总和为0之外,我不需要为我

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

现在,通常我会在qty列上放置一个索引,并通过说
查询表格,其中qty 0
,但是,数量在15个单独的列中(size1库存、size2库存等)

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

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

选项:

  • 拍摄所有5000000行(大约需要2.5小时-不可行)
  • 添加一个谓词,例如
    ,其中size1\u stock+size2\u stock。。0
    (实际上没有更快)
  • 在所有15列上添加一个索引(这样做行吗?我相信创建索引会花费很长时间,尽管也许可以在迁移日之前完成)
不幸的是,清除表不是一个选项-供应商说这些记录需要保留


任何建议都很好

谓词为size1_stock+…0的查询在源数据库(普适(btrieve))上运行需要多长时间,如果这很快,我们可以在源系统普适(btrieve)中创建临时/临时表然后将这些有效记录从大表插入这个表中,然后通过MSSQL链接服务器从这个临时/临时表中选择*。我明天就要尝试一下,看看效果如何。你需要找出性能的问题所在:查找表中的少量行?通过网络复制数据?插入到目标表中。如果你打破这一点,你可能能够调整每一块,即使用工具选择有限的数据到本地平面文件-需要多长时间?将文件复制到SQL Server—需要多长时间?将文件插入目标表-需要多长时间?链接服务器上的扩展操作并不总是可靠的。