php - 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 行,所以我认为这可能是一个问题,但它并不能解释为什么有时网站加载速度很快。
另一个可能的问题可能是虚拟服务器,但我不确定这是否解释了查询的随机缓慢。
有什么想法可能是实际问题吗?或任何可以帮助我的测试工具?
解决方案
你有一个缓慢的查询?
在查询上运行 EXPLAIN 并分析它。
推荐阅读
- java - JAVA和C++中的多态性相同吗?
- php - 为什么有结果时消息不隐藏?
- sql-server - 尝试在无人参与的情况下安装 SQL Server 2017 时出现错误“生成 XML 文档时出错”
- ios - 在应用程序本地存储大量图像的正确方法
- html - 如何选择角度6中的所有复选框?
- sql - SQL 类型 IGNORE_DUP_KEY
- python - JSON 有效负载 - 带日期
- c# - 具有展开和折叠功能的嵌套 GridView - ASP.NET C#
- android - 添加 appbrain-sdk:14.30 后 Dex 文件超过 64k
- laravel - 在 laravel 中返回多个值