如何编写好的查询

时间:2011-12-21 12:13:30

标签: sql ruby-on-rails algorithm

我来自非计算机科学背景,现在我是一名Ruby on rails开发人员,使用active_record从数据库中获取值。虽然我读到了rails可扩展性问题,但我找到'N query' 'N + 1 queries' 'N log N'的很多地方我都是我不熟悉。我希望你们帮助我解释所有这些以及在哪里可以得到一个很好的博客或网站来解释所有这些术语。

2 个答案:

答案 0 :(得分:2)

这三个例子是描述算法需要做多少工作才能得到最终结果的简写方法。

点击此处了解更多信息:

http://en.wikipedia.org/wiki/Big_O_notation#Orders_of_common_functions

答案 1 :(得分:2)

这里有两件不同的东西:

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

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

  3. 这会为每个帖子触发一个额外的SQL查询,因此如果您有N个帖子,那么您最终会进行N + 1个查询。所有这些额外的查询将是非常快速的查询,但开销/延迟会迅速增加,因此它可以减慢内容的速度

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