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表。访问次数=访问次数,等等
。下面是另一篇关于在重复密钥插入中更新多个列的文章: