你的索引是什么样? 我猜测你可能是指这个 KEY `i_post_fk_anchor_user` (`fk_anchor_user`,`post_time`) 那你的查询语句是什么? 索引仅是针对某些查询起作用,不可能一个索引对所有类型的查询语句均起作用。对的,索引是 KEY `i_post_fk_user` (`fk_user`,`post_time`) 。上面多了个单词,不好意思。 查询语句是select id from t_post where fk_user = ? order by post_time DESC limit 10.这样得到了post表的 idList,然后我用这个idList查询第二张表: select * from t_reply where fk_post = ? ;这样得到了该条说说的所有评论,其实我也想在这里order by reply_time,因为说说的评论是按照时间先后顺序排列的,即使不在数据库排序,到了Java service也要排序。
针对 select id from t_post where fk_user = ? order by post_time DESC limit 10. ,如果同一用户的记录很多,则 (`fk_user`,`post_time`) 索引有效,如果同一用户仅有几个记录,则这个索引意义不大和 (`fk_user`,) 没什么差别,极端的情况就是每个用户只有一条记录,则这个索引(`fk_user`,`post_time`) 完全褪化成 (`fk_user`,) 。但另一种极端情况主浊全表100万条记录全是同一用户的记录,则可以体现(`fk_user`,`post_time`) 索引的作用。
1.索引有无必要增加时间戳字段?
2.MYSQL有无返回多个list的方法?
3.一张表完成还是两张表将说说主题和回复拆开好?
你的索引是什么样? 我猜测你可能是指这个 KEY `i_post_fk_anchor_user` (`fk_anchor_user`,`post_time`)
那你的查询语句是什么? 索引仅是针对某些查询起作用,不可能一个索引对所有类型的查询语句均起作用。
你的索引是什么样? 我猜测你可能是指这个 KEY `i_post_fk_anchor_user` (`fk_anchor_user`,`post_time`)
那你的查询语句是什么? 索引仅是针对某些查询起作用,不可能一个索引对所有类型的查询语句均起作用。对的,索引是 KEY `i_post_fk_user` (`fk_user`,`post_time`) 。上面多了个单词,不好意思。
查询语句是select id from t_post where fk_user = ? order by post_time DESC limit 10.这样得到了post表的
idList,然后我用这个idList查询第二张表:
select * from t_reply where fk_post = ? ;这样得到了该条说说的所有评论,其实我也想在这里order by reply_time,因为说说的评论是按照时间先后顺序排列的,即使不在数据库排序,到了Java service也要排序。
1.索引有无必要增加时间戳字段?
2.MYSQL有无返回多个list的方法?
3.一张表完成还是两张表将说说主题和回复拆开好?
好吧 忘记了left join,一直想着in
针对 select id from t_post where fk_user = ? order by post_time DESC limit 10. ,如果同一用户的记录很多,则 (`fk_user`,`post_time`) 索引有效,如果同一用户仅有几个记录,则这个索引意义不大和 (`fk_user`,) 没什么差别,极端的情况就是每个用户只有一条记录,则这个索引(`fk_user`,`post_time`) 完全褪化成 (`fk_user`,) 。但另一种极端情况主浊全表100万条记录全是同一用户的记录,则可以体现(`fk_user`,`post_time`) 索引的作用。