首页 > 解决方案 > MYSQL db中的PHP执行语句真的很慢

问题描述

我正在为一家在 MYSQL 中显示数据库信息的公司建立一个 php 网站,但有时加载该信息需要大约 20 秒,而且它只是随机发生的。正常工作时,大约需要 0.005 秒。

该数据库位于公司内部网的本地虚拟服务器中,但我通过 dyndns.info:port 访问它。慢的时候,如果你多次重载,网站就一直慢,突然快加载的时候,就一直在快速重载,等等。

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 行,所以我认为这可能是一个问题,但它并不能解释为什么有时网站加载速度很快。

另一个可能的问题可能是虚拟服务器,但我不确定这是否解释了查询的随机缓慢。

有什么想法可能是实际问题吗?或任何可以帮助我的测试工具?

标签: phpmysqlsqlms-access

解决方案


你有一个缓慢的查询?

在查询上运行 EXPLAIN 并分析它。


推荐阅读