select id,like_count,favorite_count from message_message where id in(select message_id from message_message_tags where messagetag_id=62101) and (category=9 or category=1) order by (like_count+favorite_count) desc
原因是in子句的数据量大的话,性能就会非常低下。详见:
修改成多表查询:
select t1.sender_id,t1.id,t1.like_count,t1.favorite_count,t1.add_datetime from message_message t1, message_message2tag t2 where t1.id = t2.message_id and t2.tag_id=120560 and t1.category in (9,1) and t1.add_datetime>'2012-06-29' and t1.add_datetime < '2012-07-03' order by (like_count+favorite_count) desc limit 60
性能解决了,但发现有重复记录:
+----------+------------+----------------+-----------+---------------------+
| id | like_count | favorite_count | sender_id | add_datetime |
+----------+------------+----------------+