gpt4 book ai didi

php - 为什么我的查询在 PHP 中慢而在 PHPMYadmin 中快?

转载 作者:行者123 更新时间:2023-11-29 02:03:07 25 4
gpt4 key购买 nike

以下查询使用索引进行了优化。该时间是在 PHP 中执行查询之前和之后精确测量的,有时需要 10 或 20 秒。我似乎不依赖于行数,因为有时行数少于 10,即使这样查询运行速度也很慢。除了如下所示的查询执行之外,PHP 不执行任何其他操作。

SELECT * FROM (
SELECT o.op AS orid,
(3959 * acos(cos(radians(59.4369583424862))
* cos(radians(d.latitude)) * cos( radians( d.longitude) -
radians(24.7535276412964)) + sin(radians(59.4369583424862))
* sin( radians( d.latitude ) ) ) ) AS distance
FROM (
SELECT * FROM d WHERE
d.type='rdw' AND d.longitude > 24.4837311595 AND
d.longitude < 25.0233241231 AND d.latitude > 59.1671618607 AND
d.latitude < 59.7067548243
) AS d
LEFT JOIN o ON d.destinid = o.destinid
LEFT JOIN op ON o.operatorid = op.operatorid
having distance < 30
ORDER BY distance
) AS t
GROUP BY trajectoperatorid
LIMIT 0, 30

查询是这样执行的:

$stmt = $pdo->prepare($sql1);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); //foreach($rows as $row){

在第一次测量之前已经存在与数据集的连接。

当使用 SQL_NO_CACHE 在 phpmyadmin 中运行相同的查询时,它始终只需 0.06 秒。为什么完全相同的查询在 PHP 脚本中运行时速度很慢?

下面是 php 脚本:

write_log_file('Start query'.date('l jS \of F Y h:i:s') . substr((string)microtime(), 1, 8));

$sql1 = "
SELECT * FROM (
SELECT o.op AS orid,
(3959 * acos(cos(radians(59.4369583424862))
* cos(radians(d.latitude)) * cos( radians( d.longitude) -
radians(24.7535276412964)) + sin(radians(59.4369583424862))
* sin( radians( d.latitude ) ) ) ) AS distance
FROM (
SELECT * FROM d WHERE
d.type='rdw' AND d.longitude > 24.4837311595 AND
d.longitude < 25.0233241231 AND d.latitude > 59.1671618607 AND
d.latitude < 59.7067548243
) AS d
LEFT JOIN o ON d.destinid = o.destinid
LEFT JOIN op ON o.operatorid = op.operatorid
having distance < 30
ORDER BY distance
) AS t
GROUP BY trajectoperatorid
LIMIT 0, 30";

$stmt = $pdo->prepare($sql1);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

最佳答案

要通读的 SQL 太多了!我建议进入 EXPLAIN MySQL 中的命令来跟踪问题,而不是尝试从 PHP 进行分析。

另请查看 Optimizing Queries with EXPLAIN .

一旦您了解了数据库内部正在发生的事情,如果需要的话,调整 PDO 的使用可能会更容易。

关于php - 为什么我的查询在 PHP 中慢而在 PHPMYadmin 中快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11453428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com