ruby 1.9.3
と ruby-datamapper を使用していpostgresql
ます。エントリでいっぱいのテーブルがあり、それぞれに と の 3 つのプロパティがid
ありtext
ますcreated_at
。最後はDate
オブジェクトです。
私のアプリケーションでは、SELECT
次のようなエントリがいくつかありますcollection = Entry.all(:text => /SomeRegexp/)
。返された で発生するのすべての異なる値を知りたいと思います。以下の2つの方法を考えました。created_at
DataMapper::Collection
を繰り返し、
DataMapper::Collection
すべての日付を収集します。dates = Array.new Entry.all(:text => /SomeRegexp/).each { |entry| dates.include?(entry.date) ? next : dates = dates << entry.date }
長所:
- それはうまくいくはずです
短所:
- 大量のデータの場合は遅い
- それはうまくいくはずです
データベースに毎日のエントリを要求し、collection != nil の日付を収集します。
dates = Array.new for date in DatabaseStartDate..Date.today Entry.all(:created_at => date, :text => /SomeRegexp/).empty? ? next : dates = dates << date) end
長所:
- 特に大量のデータでは、上記の例よりも高速である必要があります
短所:
- 多くのデータベース クエリ
- 特に大量のデータでは、上記の例よりも高速である必要があります
注意: 上記のコードはテストされていない疑似コードです。実際のコードが何をすべきかについて読者に大まかなアイデアを提供するだけなので、動作する可能性は低いです。より詳細な例が必要な場合は、お気軽にコメントしてください。
次の通知: 疑似コードにエラーが見つかった場合はお知らせください。より迅速に作業を開始できます。;)
最後に私の質問は次のとおりです。