2011-12-21 48 views
3

我来自非计算机科学背景,现在我作为Ruby on Rails开发人员使用active_record从数据库提取值。在阅读rails可伸缩性问题时,我发现很多地方是'N query' 'N + 1 queries' 'N log N'我不熟悉。我希望你们帮助我解释所有这些,以及我可以在哪里找到一个很好的博客或网站来解释所有这些术语。如何编写漂亮的查询

回答

2

这里有2件独立的事情:

  1. N日志N,N^2等,这些是指一个算法的运行时间作为其输入大小的函数
  2. 术语N + 1查询指的是非常具体的问题。假设您有标准的博客示例应用程序,其中Post和Author为模型。我可能会选择收集所有实际写过文章的作者的姓名:

    names = Post.all.collect {| post | post.author.name}

这将触发对每一个职位一个额外的SQL查询,所以如果你有ñ职位,那么你会最终做N + 1个查询。所有这些额外的将是非常快的查询,但开销/延迟加起来很快,所以它可以减缓东西下降

Rails active record guide解释了这一点,缓解轨道使可用。