2014-02-27 53 views
1

我使用Perl和DBI包來執行MySQL連接和命令。我發現有關一個查詢在列上執行多個更新的功能的線程。在單個MySQL查詢中更新多個列是否有限制?

是否有限制?我可以構建一個能夠使用唯一數據更新50,000行的單個查詢嗎?

+2

你需要解釋你在想什麼類型的查詢。我想這比'UPDATE table SET column = column + 1'更重要嗎?請鏈接到您正在討論的主題。 – Borodin

+1

有一個限制:'max_allowed_pa​​cket'。如果您嘗試執行的查詢大於該設置,則會出現[數據包太大](https://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html)錯誤。 – ThisSuitIsBlackNot

+0

這聽起來像是你想循環並用不同的數據多次運行相同的查詢。如果確實如此,你當然可以。 –

回答

1

存在一個限制:您不能執行大於max_allowed_packet字節的查詢,否則您將收到packet too large錯誤。在MySQL 5.5中,服務器的缺省值爲1MB,客戶端庫的缺省值爲1GB(但mysql命令行實用程序僅爲16MB)。

你應該看看LOAD DATA INFILE作爲一種可能的選擇;對於50,000行,它可能比複合插入更快,並且您不必擔心超過max_allowed_packet