- 论坛徽章:
- 0
|
2个表a_movie 与a_mclassid
a_movie 表记录了影片资料的信息字段是movid(主键),title,click,addtime,modifytime等,其中有click,addtime,modifytime分别记录了点击,添加时间,修改时间。时间为int
a_mclassid表记录了影片分类的对于信息,字段movid是外键。对应a_movie表中movid,字段category是记录影片所属分类的ID,
a_movie可能在a_mclassid中存在多条记录,因为一部影片可以选择多个分类的。
所以在查询影片记录的时候需要过滤掉重复的记录。
SQL:SELECT a.* from a_movie as a right join a_mclassid as b on a.movid=b.movid WHERE a. locked=0 and a.lookgid<>2 and b.caegory in (1,2,3,4,5,6) groyp by b.movid order by a.addtime desc
a表中的click,locked,addtime是单列索引b 表中的movid,category 都是单列索引
这个语句执行后效率极差.explain 出现了
1 SIMPLE b range category,movid category 4 NULL 189 Using where; Using temporary; Using filesort
1 SIMPLE a eq_ref PRIMARY PRIMARY 4 vodcms.b.movid 1 Using where
查询速度大约是:0.0182左右。
大家有什么好优化办法, |
|