Sql server BCP QueryYout是否使用索引?

Sql server BCP QueryYout是否使用索引?,sql-server,bcp,Sql Server,Bcp,我正在对112m行的表运行BCP,以选择大约1.6m的行 表定义有25 x nvarchar(10)、20 x INT列和2位列。它还有一个非持久化计算列,它是nvarch(14),将两个int列转换为一个字符串。它在计算列上有一个聚集索引,在INT列上有一个其他索引(在where子句中使用) 从性能(20分钟)判断,查询似乎正在运行扫描,这一结论也得到了以下事实的支持:当输出文件达到其最终大小时,读取将持续一段时间 bcp是否使用索引?我希望使用索引查找和键查找可以运行得更快 有人能推荐任何性

我正在对112m行的表运行BCP,以选择大约1.6m的行

表定义有25 x nvarchar(10)、20 x INT列和2位列。它还有一个非持久化计算列,它是nvarch(14),将两个int列转换为一个字符串。它在计算列上有一个聚集索引,在INT列上有一个其他索引(在where子句中使用)

从性能(20分钟)判断,查询似乎正在运行扫描,这一结论也得到了以下事实的支持:当输出文件达到其最终大小时,读取将持续一段时间

bcp是否使用索引?我希望使用索引查找和键查找可以运行得更快


有人能推荐任何性能改进吗?

我还不能回答“BCP queryout是否使用索引”这个问题——表面上看起来确实如此,但我没有找到答案来回答它是否创建了最佳执行计划

然而,我发现通过改变我的方法可以提高性能:

  • 将行选择到新表中
  • 请把新表打印出来
  • 放下新桌子

在不到2分钟内完成。

您要确保“src”上有索引。否则写160万行将需要一些时间,特别是如果“F:”不是本地驱动器。如果将select作为查询正常运行,它的运行速度有多快?您好@SQLDBA,谢谢。。。src列是根据Q“和INT列上的另一个索引(在where子句中使用)”,F是一个本地驱动器,查询在SQL SMSI的2.20中运行,我从未尝试过,但我假设您可以使用BCP的查询提示,有趣的是@JamesZ如果我只运行带有查询提示的查询,我会得到我期望的执行计划(index seek+key lookup),但当我将其包含在bcp queryyout语句中时,我会得到一个错误“查询处理器无法生成查询计划,因为此查询中定义了提示”建议重新提交查询并指定任何提示。
bcp "select * from db.dbo.table where src = 1002" queryout F:/path/1002_1638762.dat -n -U ausername -P *********