新年快乐!
我有一个模型可以保存数十万条记录。该模型如下所示:
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 用于生产。对于这个特定的操作,他们两者之间会有什么区别吗?