【问题标题】:Rails / SQL ... better to access database once and store data in array?Rails / SQL ...更好地访问数据库并将数据存储在数组中?
【发布时间】:2013-05-25 15:41:49
【问题描述】:

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

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

这是一个例子:

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

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

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

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

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

【问题讨论】:

    标签: sql ruby-on-rails performance rails-activerecord processing-efficiency


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这证实了我所希望的——我(作为新手)不知道的效率上没有明显差异。
    • @DanShev,是的,只要遵循通用约定,只在存在问题时解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多