一个信息发布系统,大多数情况最新发表的记录要显示在最前面。
列出一个用户的最新的10篇文章,平常的做法创建一个双索引(username+posttime)。使用SQL语句:
select * from article where username=”阿海” order by posttime desc limit 0,10;
假如用户发表的文章有上万篇,这个排序将会非常的慢,好像没有使用索引一样,show processlist经常看见有sorting的进程。按照理论来说应该不会存在这个问题,不知道是不是bug。
mysql有修改表的默认排序功能
alter table article order by posttime desc [,articleid desc];
这样修改了表结构之后,可以默认按照posttime降序排序
就不需要再建立双索引(username+posttime),只要建立用户名字段的索引即可,查询时只需要使用以下SQL语句
select * from article where username=”阿海”;
版权声明:本文为weixin_34582773原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。