0

我的应用程序的核心是使用存储在几个数据库表中的输入数组和参数进行多条件比较。

我正在努力使这个过程最有效......我认为这可能会导致一些关于使用内存与访问数据库的良好对话。

这是一个例子:

  1. 我有一个Merchant,MerchantUserRelationUser表。
  2. 我需要存储在临时数组中的大部分数据来自MerchantUserRelation,但在某一时刻,我需要检查它是否是用户的生日(user.birthdate.today?)。

对我来说,似乎有两种选择:

  1. 创建一个仅包含数据的临时数组,UserMerchantRelation然后为该user.birthdate.today?方法单独访问数据库(2次命中数据库),--或--
  2. UserMerchantRelation使用AND中的数据创建一个稍大的临时数组User(因此只访问数据库一次)

对于这个例子,我认识到差异非常小(阅读:可以忽略不计),但如果数组大小和所需的数据库访问次数要大得多怎么办?

感谢您提供任何参考和/或见解!

4

1 回答 1

1

我们应该忘记小的效率,比如大约 97% 的时间:过早优化是万恶之源 - Donald Knuth

正如你所说,差异可以忽略不计。并且没有绝对的解决方案:内存或数据库命中。那么为什么现在关心他们呢?如果您的应用程序增长并真正遇到瓶颈,您始终可以通过任何可行的方法进行分析和重构以克服它。

于 2013-05-25T17:19:29.747 回答