我想將2個現有的MySQL MyISAM表合併成一個使用PHP的新表。這裏是我的PHP代碼:在PHP中創建大型MySQL表時產生巨大的延遲
$sql = "CREATE TABLE new_table SELECT * FROM table_1 UNION SELECT * FROM table 2";
mysql_query("$sql");
注意:表格相當大,有超過3000萬條目。
所以我在瀏覽器中打開PHP文件,以便它執行腳本。我用phpmyadmin監控數據庫,起初絕對沒有任何反應。然後在大約30分鐘後,表格「new_table」顯示出裏面的所有正確數據。
PHP緩衝或緩存「new_table」直到它完成,然後在MySQL中創建它?如果是這樣,有沒有辦法告訴php不要?恐怕如果是這樣的話,一旦表格達到數十億行,當我嘗試複製它時,它將不再適合緩衝區。
有誰知道如何讓PHP立即執行查詢而無需緩衝或緩存延遲?
我試過mysql_unbuffered_query(「$ sql」);並且仍然有巨大的延遲。
任何幫助將不勝感激!
我不認爲PHP會和它有很大關係。 – alex 2011-06-15 02:14:55
你應該在'start transaction'中包裝'create table'調用;創建表...;提交;'阻止。 – 2011-06-15 02:18:15
你不是簡單地從SQL命令行執行此操作的任何原因? – 2011-06-15 02:25:09