Php 如何组合这些查询以实现更快的性能?

Php 如何组合这些查询以实现更快的性能?,php,mysql,Php,Mysql,有没有办法组合以下查询或其中的一些查询?我的目标是用更少的插入实现更快的性能。但是,我不知道如何处理复制键更新新表。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(p

有没有办法组合以下查询或其中的一些查询?我的目标是用更少的插入实现更快的性能。但是,我不知道如何处理
复制键更新新表。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)");

我相信这将结合前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
或必须是联合/单独查询。

您可以通过切换到mysqli\uuapi来使用多查询;这是一种选择,该api可能比mysql略快。可能无法解决问题,但会帮助您稍微减少代码。普通的
mysql\uu
已经被弃用一段时间了。您应该跳转到
mysqli\uuu
函数系列每当您在新代码中使用数据库扩展时,它都会被弃用,并且已经存在多年,在PHP7中永远消失。如果你只是在学习PHP,那么就把精力花在学习
PDO
mysqli
数据库扩展上@RiggsFolly很好,因为我是一个爱狗的人!“复制钥匙”行呢?啊,忘了那一点。但是,您可以在
分组依据
之后,在重复键上添加
,更新新的\u表。页面=值(页面),新的\u表。访问次数=访问次数,等等
。下面是另一篇关于在重复密钥插入中更新多个列的文章: