我和我們的團隊遇到了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