2015-03-13 71 views
0

我對112m行的表格運行BCP以選擇約1.6mBCP查詢使用索引?

表定義具有25 x nvarchar(10),20 x INT列和2位列。它還有1個非持久計算列,它是nvarch(14)將2個int列轉換爲一個字符串。它具有所計算的列與其他索引上的INT列聚集索引

bcp "select * from db.dbo.table where src = 1002" queryout F:/path/1002_1638762.dat -n -U ausername -P ********* 

由性能判斷(在where子句中使用) - - 20分鐘後它看起來壽查詢正在運行一掃描,這一結論也得到了支持,即當輸出文件達到其最終大小時,讀取會持續一段時間。

bcp是否使用索引?我會期待這使用索引搜索和密鑰查找運行得更快?

任何人都可以推薦任何性能改進?

+0

你想確保「src」有一個索引。否則,寫160萬行需要一些時間,特別是如果「F:」不是本地驅動器。如果通常將查詢作爲查詢運行,選擇運行速度有多快? – smoore4 2015-03-13 09:03:36

+0

hi @SQLDBA,謝謝... src列按照Q「索引並且在INT列(在where子句中使用)上有一個索引」,F是本地驅動器,查詢運行在大約2.20在SQL SMS – garrilla 2015-03-13 09:18:29

+0

我從來沒有嘗試過,但我會假設你可以使用查詢提示與BCP,或者至少你可以嘗試如果你添加索引提示那裏會發生什麼。 – 2015-03-13 10:44:21

回答

0

我還沒有能夠回答「BCP查詢使用索引」的問題 - 表面上看起來似乎,但它是否創建最佳執行計劃我沒有找到答案。

但是,我沒有找到一個改變我的方法提高性能:

  • 選擇行到一個新表
  • BCP出來的新表
  • 下降的新表

完成不到2分鐘。