看了一篇文章,谈到排序的问题,在平时的项目中,排序非常常见,经常需要用到,排序可以在不同的地方处理,比如程序内部,也可以是数据库中,现简单写下:
在MySQL数据库中排序的条件及优势:
条件首先得是,你的数据源是数据库形式的
1.MySQL可以创建索引,排序速度快
2.数据量较大,但是排序结果仅需要其中某个小子集,比如top n,这样数据库会更快
3.复杂排序条件,比如按照几个字段进行排序,数据库就非常有优势了
在很多互联网项目中,并不是都是MySQL等数据库作为数据源,其使用场景,多是基于用于id的单聚合查询,这种场景使用NoSQL系统的较多,比如redis,memcached等。
这种场景就需要在应用程序中做排序,也一并总结下程序内部排序的条件和优势
1.非基于数据库的存储方式,多数key-value的存储并不支持内部排序
2.降低DB的负载,在DB负担重时,程序内部排序,能够提升可扩展性
3.不存在锁表的问题
4.对于常用的排序结果,程序内部对结果增加临时缓存,也是提升性能的有利措施