我将在我的代码片段中使用Python并引用Django文档,但此问题旨在与语言无关
来自Django教程:
模型是关于数据的单一,权威的数据来源。它包含您要存储的数据的基本字段和行为。 Django遵循DRY原则。目标是在一个地方定义您的数据模型,并自动从中获取数据。
接着说
它应该尽可能少地执行SQL语句,并且应该在内部优化语句。
我们如何调和这两种设计理念?为了探讨这种情况,我们假设我们有一个表格来表示个人资料。我们的数据模型中还有一个函数get_profile(profile_id)
,它执行以下操作:
接下来,我们发现我们还需要一个get_profiles(list_of_profile_ids)
函数。根据我的理解,DRY原则将强制执行
function get_profiles(list_of_profile_ids):
profiles = []
for profile_id in list_of_profile_ids:
profiles.append(get_profile(profile_id))
return profiles
如果我们的profile_id
列表很长,我们现在正在执行许多单独的数据库查询。与对profile_id in (id1, id2, id3)
执行单个数据库查询然后在每行执行相同计算的函数相比,这不是非常低效吗?
如何协调DRY以保持执行效率?