1
我提出以下查询在我applicattion,检索行:Mysql的减法低性能
SELECT
title,
SUBSTRING(description, 1, 200) AS s_description,
refresh_time, (UNIX_TIMESTAMP()-refresh_time) AS since,
state, state_friendly,
city, city_friendly,
category, category_friendly,
basename, COUNT(ad_id) AS im_ocur
FROM `ad` `a`
JOIN `state` ON state_id = ad_state_id
JOIN `city` ON city_id = ad_city_id
JOIN `category` ON category_id = ad_category_id
LEFT JOIN `ad_image` ON ad_image_ad_id = ad_id
WHERE (ad_country_id = 195)
GROUP BY `ad_id`
ORDER BY `refresh_time` DESC, front DESC
LIMIT 20
我已经在许多情况下测试,但指的是一个城市,有很多行的时候,表现它已经降低。经过几次更改后,我意识到问题是由于“(UNIX_TIMESTAMP() - refresh_time)”表达式造成的,所以似乎Mysql Engine在行限制设置为20之前进行算术运算。
我的替代解决方案是post-用PHP处理数据,但我更喜欢完整的mysql方式。
可能吗?
与使用数学函数的返回列没有任何关系,只是由许多行上的GORUP BY造成的。 – ajreal
但是,当我删除该表达式时,尽管使用GROUP BY –
,但性能仍然非常出色您是否尝试对此查询使用EXPLAIN? – Oyeme