mem*_*und 13 java sql collections java-ee
我的数据库中有一些日期条目.什么是最好的?:
order by
.collection.sort
左右对它们进行排序?谢谢
在某种程度上,这取决于完整集合中有多少个值。如果是 20-30 个值,那么您可以在任何地方进行排序 \xe2\x80\x94 即使相对较差的排序算法也可以快速完成(但要避免Stooge Sort;那太糟糕了) \xe2\x80\x94 作为这是您可能期望在一个服务响应中实际获取的数据块的大小。
\n\n但一旦进入更大的数据集,您就需要更仔细地计划。特别是,如果没有必要,您希望避免移动数据。如果数据当前仅存在于数据库中,那么您确实不想将其全部提取到客户端中只是为了对其进行排序(相对昂贵的操作),然后将其几乎全部丢弃。最好一开始就在数据库中对数据进行排序,这样按顺序获取数据就很简单了;在关系数据库术语中,保持数据排序在功能上与维护数据索引相同。事实上,您可以对数据有多个索引,这可以使相当复杂的查询变得更快。(NoSQL 数据库更加多样化;有些甚至不支持保持数据排序的概念。)维护索引的缺点是它们占用更多空间并且需要时间来维护,特别是当在数据库中创建数据时。第一名。
\n\n所以\xe2\x80\xa6 回到你的问题,你可能想尝试不对应用程序中的数据进行排序:对于大多数数据,适当的索引可以更有效,因为它让你的代码甚至不查看不需要的数据。但是,如果您出于其他原因必须将其全部提取到应用程序中并且无法将其预先排序,则没有理由避免自己对其进行排序:Java 的排序算法高效且稳定。但是您应该衡量以新顺序从数据库中获取它是否更快。(问题是数据库开销是否超过了重新排序的超线性成本;很多问题都在 \xe2\x80\x9c 可能的领域中;很难说 \xe2\x80\x9d 就是答案。)
\n\n另一件需要平衡的事情是,对于您的代码来说,不进行排序本身而始终将其委托给数据库是否更简单。保持代码更简单(并且更无错误)是一个很好的目标\xe2\x80\xa6
\n 归档时间: |
|
查看次数: |
3330 次 |
最近记录: |