そしてあけましておめでとうございます!
数十万のレコードを保持するモデルがあります。モデルは次のようになります。
class Transaction(models.Model):
user = models.ForeignKey(User)
client = models.ForeignKey(Client)
amount = models.FloatField()
特定のユーザーが扱っているすべてのクライアントを知りたいです。一意のクライアント ID を取得するには、Django ORM を単独で使用できます。
Transaction.objects.filter(user=the_user).distinct('client_id').values_list('client_id', flat=True)
または、次の操作を行います。
set(Transaction.objects.filter(user=the_user).values_list('client_id', flat=True))
どちらも同じ結果になります。しかし、大量の記録を考えると、どちらが速いでしょうか? distinct
データベースでの操作が比較的遅いことは知っていますが、pythonの操作と比較してどうset()
ですか?
最後に、データベースについて言えば、私の選択肢は本番用の MySql と PostgreSql です。この特定の操作について、2 つの間に違いはありますか?