我正在为一家公司建立一个 php 网站,该网站显示 MYSQL 中数据库的信息,但有时加载该信息需要大约 20 秒,而且它只是随机发生的。正常工作时,大约需要 0.005 秒长。
数据库位于公司内网的本地虚拟服务器中,但我通过dyndns.info:port Access 它。 当速度慢时,如果您重新加载多次,网站会保持缓慢,突然当加载速度快时,会保持快速重新加载,等等。
try {
$conection= new PDO("mysql:host=domain.dyndns.info; port=0000; dbname= db", user, pass);
return $conection;
} catch (PDOException $e) {
}
代码执行语句很慢:
$statement = $conexion->prepare("SELECT table1.col1, table2.col2, table2.col3, table2.col4, table2.col5 FROM table1 LEFT JOIN table2 ON table1.col6 = table2.col6 LEFT JOIN table 3 ON table1.col1 = table3.col1 LIMIT 10 ");
$start_timer = microtime(true);
$statement->execute();
$piezas = $statement->fetchAll();
$end_timer = microtime(true);
该查询有三个左联接,table1 有 50,000 行,table2 有 20,000 行,table3 有 80,000 行,所以我认为这可能是一个可能的问题,但它并不能解释为什么有时网站加载速度很快。
另一个可能的问题可能是虚拟服务器,但我不确定这是否可以解释查询的随机缓慢。
有什么想法可能是实际问题吗?或者有什么测试工具可以帮助我?
最佳答案
您的查询速度很慢?
对查询运行 EXPLAIN 并对其进行分析。
关于PHP在MYSQL数据库中执行语句非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55345603/