2017-01-04 76 views
0

任何方式來結合以下查詢,或其中的一些?我的目標是通過更少的插入來實現更快的性能。但是我不知道如何處理ON DUPLICATE KEY UPDATE new_table.pages=VALUES(pages),我將插入2個以上的變量。如何結合這些查詢以獲得更快的性能?

mysql_query("INSERT INTO new_table (hash, pages) 
SELECT hash, COUNT(id) AS pages 
FROM behaviour GROUP BY hash 
ON DUPLICATE KEY UPDATE new_table.pages=VALUES(pages)"); 


mysql_query("INSERT INTO new_table (hash, visits) 
SELECT hash, visits from audience 
ON DUPLICATE KEY UPDATE new_table.visits=audience.visits"); 


mysql_query("INSERT INTO new_table (hash, first_visit) 
SELECT hash, timestamp from audience 
ON DUPLICATE KEY UPDATE new_table.first_visit=audience.timestamp"); 


mysql_query("INSERT INTO new_table (hash, last_visit) 
SELECT hash, max(timestamp) from behaviour 
group by hash 
ON DUPLICATE KEY UPDATE new_table.last_visit=VALUES(last_visit)"); 


mysql_query("INSERT INTO new_table (hash, goals) 
SELECT alerts_data_hash, COUNT(*) AS goals 
FROM alerts_data 
WHERE alerts_data_status = 'goal' 
GROUP BY alerts_data_hash 
ON DUPLICATE KEY UPDATE new_table.goals=VALUES(goals)"); 
+0

你可以通過切換到mysqli_ api來使用多重查詢;這是一個選項,並且api可能比mysql_稍快。可能沒有解決問題,但會有助於減少你的代碼。 –

+0

無論如何,普通的'mysql_'已被棄用一段時間。你應該跳到'mysqli_'系列函數 – yivi

+1

每次你使用[mysql_'](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php ) 在新代碼中的數據庫擴展 ** [一隻小貓被勒死在世界的某個地方](http://2.bp.blogspot.com/-zCT6jizimfI/UjJ5UTb_BeI/AAAAAAAACgg/AS6XCd6aNdg/s1600/luna_getting_strangled.jpg)**它已被棄用並且已經使用了多年,並且在PHP7中永遠消失了。 如果您只是學習PHP,請花些精力學習'PDO'或'mysqli'數據庫擴展。 [開始](http://php.net/manual/en/book.pdo.php) – RiggsFolly

回答

0

我相信這將結合第4個查詢

INSERT INTO new_table (hash, pages, visits, first_visit, last_visit, goals) 
SELECT A.hash, COUNT(B.id), A.visits, A.timestamp, MAX(B.timestamp), 0 
FROM audience A 
LEFT OUTER JOIN behaviour B ON B.hash = A.hash 
GROUP BY A.hash 

我不知道如果最後一個可以是join或將不得不聯合/單獨的查詢。

+0

「重複鍵」行怎麼樣? – EnexoOnoma

+0

啊,忘了那一點。但是,您可以在GROUP BY之後添加ON DUPLICATE KEY UPDATE new_table.pages = VALUES(pages),new_table.visits = a.visits等。這裏是另一個關於更新重複鍵插入多列的文章:http://stackoverflow.com/questions/8991593/on-duplicate-key-update-multiple-columns – CptMisery