我有一个带有 Apache、PHP 和 MySQL 的 EasyPHP 本地 Web 服务器。到目前为止,我一直在使用一个只有 500 条记录的数据库。有时在查询数据库时,在返回数据之前会有很大的延迟,可能大约 10 秒,但并不一致。也许每 10 个用户搜索就会发生一次。今天我将一堆测试数据加载到 6 个表中。现在每个表都有大约 15,000 条记录。现在,在搜索用户时,大约需要 25 秒才能返回数据,并且每次都会发生。
这是 SELECT 查询:
SELECT SQL_CALC_FOUND_ROWS criteria.id, criteria.uid
FROM user_profile
INNER JOIN criteria ON (criteria.id = user_profile.cid)
WHERE ((criteria.city = 250)
AND (user_profile.dob BETWEEN STR_TO_DATE('1978-09-27', '%Y-%m-%d')
AND STR_TO_DATE('1993-09-27', '%Y-%m-%d'))
AND (criteria.gender = 2)
AND (EXISTS(SELECT id FROM criteria_interests
WHERE cid = user_profile.cid AND value = 1)
OR EXISTS(SELECT id FROM criteria_interests
WHERE cid = user_profile.cid AND value = 2)))
AND (user_profile.uid != 2)
LIMIT 0, 18
该查询大约需要 25 秒才能返回 202 个结果。如果我在 phpMyAdmin 中运行该查询,它会立即加载。
我不确定滞留在哪里。我知道SQL_CALC_FOUND_ROWS
有时会导致速度变慢,但不是 25 秒才能返回 202 行。这里不对劲。
我想知道如何找出问题所在。我第一次提到的间歇性延迟基本上是在我安装EasyPHP之后发生的,所以我认为这是EasyPHP的问题。但是现在看到随着更多数据库记录问题变得多么糟糕,我认为这是一个 MySQL 问题。但是,当我在 phpMyAdmin 中运行查询时,速度非常快。所以现在我认为这是一个PHP问题。
我的 PHP 内存限制设置为 128M,这可能不是很多,但不会导致 25 秒的延迟。
有人知道我该如何解决这个问题吗?在配置 Apache、PHP 或 MySQL 方面,我不是最了解的,所以我不知道该怎么做。
感谢您的任何建议。