gpt4 book ai didi

sql-server-2008 - bcp 如何比 SSMS 更快地将简单查询结果写入磁盘?

转载 作者:行者123 更新时间:2023-12-01 01:03:53 25 4
gpt4 key购买 nike

运行以下命令需要 10.922秒:

bcp "select * from PRMTAJ_Reporting..PINVDET 
where pnd_date between 77500 and 77600" queryout Test.dat -S . -T -n

但是,在 SSMS 中运行相同的精确选择查询需要 28秒。另外,我在 bcp 命令之后在 SSMS 中运行了查询,因此我首先在 SSMS 中运行查询并不会使 bcp 受益……如果有的话,情况正好相反。

我对 pnd_date 值的多个范围执行此操作,并且每次都是相同的。我先运行 bcp 命令,然后在 SSMS 中运行相同的选择查询,每次 SSMS 查询至少需要两倍的时间才能完成。

SSMS 仅检索结果,而 bcp 具有必须将结果写入磁盘上的新文件的额外开销。这对我来说绝对是零意义......但我希望我能学到一些东西,让我的 SSMS 查询和 bcp 一样快。谁能解释一下?

最佳答案

bcp 是针对导入导出优化的实用程序,而 SSMS 是通用实用程序。预计 bcp 更快。如果它不比 SSMS 快,为什么要使用它,或者 Microsoft 提供此实用程序的原因。

关于为什么 bcp 更快,我通常可以总结以下几点。

  • SSMS 使用 .NET,因此与 bcp
  • 相比,它有一些开销。
  • SSMS 具有 GUI,因此 GUI 线程会消耗资源
  • 写入文件几乎总是比 SSMS 使用的 .NET 中的数据绑定(bind)网格快。实际上写文件是非常快速的操作。
  • SSMS 很可能使用 .NET DataSet/DataTable 构造,它是一个包含所有开销的 xml。
  • 为单一用途(bcp 导入/导出)提供的实用程序通常比通用工具 SSMS 更快。
  • 关于sql-server-2008 - bcp 如何比 SSMS 更快地将简单查询结果写入磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20717230/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com