SELECTuser.nickname,visitors.week_likesFROMuserJOINvisitorsON(user.id=visitors.user_id)WHERE(user.role>=0ANDvisitors.week_num=10ANDvisitors.week_likes>0AND(user.show_index!=-1ORuser.show_indexISNULL))ORDERBYvisitors.week_likesDESC,user.last_seenDESCLIMIT100user.id和visitors.id是主键,user.id与visitors.user_id对应。对visitors.user_id建立了索引,没什么效果,在SQL语句和索引方面能怎样优化?由于week_num和week_likes的区分度很低(=0AND(user.show_index!=-1ORuser.show_indexISNULL))aJOIN(SELECTvisitors.user_id,visitors.week_likesFROMvisitorsWHERE(visitors.week_num=10ANDvisitors.week_likes>0))bON(a.id=b.user_id)ORDERBYb.week_likesDESC,a.last_seenDESCLIMIT100;这句报错,不知道原因在哪?还有其他什么方面可以优化的吗?
2 回答
蛊毒传说
TA贡献1895条经验 获得超3个赞
explain呢?tabledesc呢?补充一下:通常数据量大,检索条件复杂,请求量也大的应用场景,考虑一下sphinx、elasticsearch的解决方案。
添加回答
举报
0/150
提交
取消