2013-04-09 84 views
1

我必須生成一個由45條插入語句組成的大報告。我如何通過將查詢拆分爲組來一次運行多個插入語句。如何在SQL Server中一次運行多個查詢

+1

我假設你的意思是「平行」,給出你對下面一個問題的評論。您應該相應地更新您的問題以避免混淆。您也可能想閱讀[this](http://stackoverflow.com/a/9799283/21567)回答相關問題。通過使插入並行運行可能不會獲得太多收益。 – 2013-04-09 05:49:35

+0

@Candy你想達到什麼目的?更快的插入?批量插入?另外,你爲什麼要插入一個報告?作爲報告的一部分,您是否生成某種形式的臨時結構?更多的上下文將幫助我們找到問題的根源。 – Gibron 2013-04-09 05:55:03

+0

@Gibron我需要使交易更快,我認爲如果我們一次運行多個查詢,查詢執行的總時間將被最小化 – Candy 2013-04-09 06:52:17

回答

0

您可以在存儲過程中編寫45條插入語句。

+1

他們會不能並行執行。 – alzaimar 2013-04-09 05:53:32

1

使用存儲過程,並通過使用它你也可以返回值。

+0

感謝您的回覆,它已經是一個存儲過程了。現在使用時間戳我可以發現每個插入語句都是一個接一個執行的。是否有機會分組,如果我會執行1-10個報表並同時執行11-20,21-30 ...也將執行 – Candy 2013-04-09 05:47:16

+0

查詢是指組是指類似的表或或相同的行爲。 – 2013-04-09 05:59:00

+0

我打算通過考慮它使用的表來對查詢進行分組。比方說,如果我使用日曆表進行多個查詢,我會將與日曆表相關的插入語句分組 – Candy 2013-04-09 06:46:01

0

您可能會成功運行多個會話(即登錄)。[編輯]我寫道,插入鎖定表,這是錯誤的。謝謝@marc_s。 [/編輯]

但是,如果您的insert先於複雜查詢,您可能會成功,因爲查詢可以並行執行。

但是,它很大程度上取決於代碼。

使用現有代碼沒有什麼可以改進的嗎?通常,通過查看報表,有足夠的空間提升業績。

+1

插入將鎖定**新插入的行** - 不一定是整個表! – 2013-04-09 06:10:02

+0

感謝@marc_s的更正。 – alzaimar 2013-04-09 14:31:32

0

嘗試使用多個存儲過程處理多個插入語句。即使您逐個執行這些過程,只要您使用不同的連接,它們也應該在SQL服務器上並行執行。

相關問題