任何方式來結合以下查詢,或其中的一些?我的目標是通過更少的插入來實現更快的性能。但是我不知道如何處理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)");
你可以通過切換到mysqli_ api來使用多重查詢;這是一個選項,並且api可能比mysql_稍快。可能沒有解決問題,但會有助於減少你的代碼。 –
無論如何,普通的'mysql_'已被棄用一段時間。你應該跳到'mysqli_'系列函數 – yivi
每次你使用[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