Php 多个SQL查询运行速度过慢的替代或帮助
在一个页面上,我确实有大约100个查询,比如Php 多个SQL查询运行速度过慢的替代或帮助,php,mysql,Php,Mysql,在一个页面上,我确实有大约100个查询,比如 $sQuery = "SELECT * FROM `users` HAVING `team` = $team AND `group` = $group AND male = 1 AND `team1` > 0 AND `team2` > 0 AND status LIKE 'movies'"; $rResult = $pdo->query($sQuery)->fetchAll(); $results = count
$sQuery = "SELECT *
FROM `users`
HAVING `team` = $team
AND `group` = $group AND male = 1 AND `team1` > 0 AND `team2` > 0 AND status LIKE 'movies'";
$rResult = $pdo->query($sQuery)->fetchAll();
$results = count($rResult);
作为cronjob运行以将这些查询的结果保存到另一个表中
users
表大约有2.100.000行。是的,2.1米,正在成长,但成长缓慢。每个查询的结果都有0到40行,而不是更多现在我的问题:我想有更好的方法来获取结果并将其保存到另一个表中,那么您有什么建议吗?令人惊讶的是,cronjob加载时间太长,当然,经常会冻结
我以前使用过准备好的语句,但这些语句更慢。至少我有这种感觉。我希望你能在这里帮助我。多谢各位 不要使用
将
作为默认筛选选项,因为它们没有按照MySQL手册中的以下内容进行优化:
HAVING子句几乎是最后应用的,就在项目发送到客户机之前,没有进行优化。(限制在使用后应用。)
像其他人一样使用WHERE
关键字。对于带有变量的查询,请始终使用准备好的语句:
$sql = "SELECT
your, columns, here
FROM
users
WHERE
team = ? AND
group = ? AND
male = 1 AND
team1 > 0 AND
team2 > 0 AND
status = 'movies'";
$stmt = $db->prepare($sql);
// ...
究竟为什么在这个查询中使用have而不是WHERE?如果不了解数据类型、索引等,我们无法回答这个问题。即使是表类型也会有不同。那么这个表上有哪些索引;解释对查询显示了什么?可能是通过简单的
插入select
?性能问题应该包括解释分析
和一些关于表大小、索引、当前时间性能、期望时间等的信息。慢
是一个相对术语,我们需要一个实际值来比较。