繁体   English   中英

PHP从外部数据库选择非常慢

[英]PHP Selecting from external database is extremely slow

我在PHP中运行一个简单的查询到外部MySQL数据库:

$sql = "SELECT COUNT(id) as n FROM `call_history` where extension_number = '0536*500' and flow = 'in' and DATE(initiated) =\"{$initiated}\"";
$rs=mysql_query($sql,$pbx01_conn);
$rs = mysql_fetch_row($rs);
echo $rs['n'];

这似乎需要永远运行,此表中大约有4000000+行。

我没有对数据库的完全写访问权,只有读访问权。 我可以做些什么来加快查询速度?

您无法像当前构造索引那样在最后一个过滤条件上使用索引。

通过将DATE(initiated)与您的输入值进行比较,由于必须计算比较值,因此不允许在initiated上使用索引(我认为是时间戳或datetime字段)并触发全表扫描。

为您的最后一个条件尝试以下操作:

AND initiated BETWEEN '? 00:00:00' AND '? 23:59:59'

? YYYY-MM-DD格式的变量。

已经解决了这一问题,您只需要确保具有extension_number, flow , and of course启动的索引。 没有这些索引,您将无法完全优化查询。 因此,如果您没有对该表的写访问权,并且那些索引丢失,那么应该与拥有该写访问权的人一起查看是否可以添加索引(请注意,添加索引会影响表的插入性能)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM