2

我有一个包含以下列的表名事务

created_at        | debit | credit | balance | account_id
2012-2-2 02:22:22 | 3000  | 0      | 0       | 8
2012-2-2 07:22:22 | 500   | 1000   | 0       | 8
2012-2-2 09:22:22 | 0     | 8000   | 0       | 8

2012-3-3 19:17:20 | 1000  | 0      | 0       | 8
2012-3-3 04:02:22 | 0     | 8000   | 0       | 8

在计算余额之前,我需要

  • 按日期(即每天)对交易进行排序
  • 然后按借方排序(较高的借方必须先出现)

我有一百万个由 account_id 区分的交易。在这种情况下,什么是有效的排序方式?

任何答案将不胜感激。

4

1 回答 1

2

这听起来很像这个问题

Transaction.all(:order => "created_at DESC, debit DESC")

这种查询正是关系数据库擅长的,并且通过适当的索引,它应该对您很有效。

对于特定帐户...</p>

Transaction.find_by_account_id(some_id, :order => "created_at DESC, debit DESC")

如果这是在帐户上设置为正确的 ActiveRecord 关联,您可以在那里设置顺序,以便始终以首选顺序返回关联:

class Account
    has_many :transactions, :order => "created_at DESC, debit DESC"
end

这样,每当您向帐户询问其交易时,就像Account.find(12345).transactions它们会自动以首选排序方式返回一样。

于 2012-12-28T14:21:53.893 回答