我和我们的团队遇到了MySQL查询中的一个奇怪问题。我们使用SELECT
声明与COUNT
,由于某种原因,它在我们使用的客户端(SQLyog)中相当“快速”,但在使用PHP时速度很慢。PHP查询速度慢但客户端速度很快
我们尝试过使用古老的mysql_query(),mysqli扩展,我们也尝试使用PDO,但都没有区别。
在Stackoverflow上的其他帖子中,我们发现它可能是一个DNS问题,可以使用my.ini中的'skip_name_resolve'修复它,但我们已经在我们的配置中使用了这个。
定时结果:
客户:2.092秒 PHP:9.1071秒
这是查询,我们使用:
SELECT SQL_NO_CACHE
COUNT(m.mm_id) AS total
FROM
db.media_multimedia m
WHERE m.cat_id IN
(SELECT
mc.cat_id
FROM
db.media_multimedia_category mc
WHERE mc.cat_active = 1)
AND m.mm_published = 1
AND (
m.mm_title LIKE "%denniy%"
OR m.mm_text LIKE "%denniy%"
OR m.mm_id IN
(SELECT
a.mm_id
FROM
db.`media_tag_multimedia` a
LEFT JOIN media.`media_tag` b
ON a.`tag_id` = b.tag_id
WHERE b.tag_name LIKE "%denniy%")
)
AND m.mm_publishing_date >= "2012-04-24 00:00:00"
AND m.mm_publishing_date <= "2013-04-24 23:59:59" ;
*注:此测试用例,我们增加SQL_NO_CACHE查询以确保我们总是获取新的结果集。*
我们用下面的PHP和MYSQL版本:
MySQL的:61年5月1日 PHP:5.3.3
任何建议,以解决这个问题?
请显示您的php代码。 – 2013-04-25 07:23:31
您可以将您的查询保存为文本文件,并在您的PHP脚本所在的同一台机器上运行以下代码: 'time mysql --user = user --password = pass file_get_contents(“query.sql”))); '' 看看有没有时差? –
core1024
2013-04-25 07:29:21
您可以验证您是否在托管您的PHP的同一台计算机上运行SQLyog?如果你从两个不同的主机连接到你的mySql服务器,这可能会解释_some_的不同。向我们展示PHP代码? – Sepster 2013-04-25 07:36:40