eager loading and lazy loading in rails

后端 未结 2 1706
清酒与你
清酒与你 2021-01-31 16:06

I am confused about eager loading and lazy loading, is there any difference in the performance of rails queries?

Is there any way to implement both ways?

2条回答
  •  眼角桃花
    2021-01-31 16:52

    Eager Loading

    One way to improve performance is to cut down on the number of SQL queries. You can do this through eager loading.

    User.find(:all, :include => :friends)
    

    Here you are firing only two queries :

    1) One for all users.

    2) One for all friends of users .

    Lazy Loading :

    When you have an object associated with many objects like a User has many Friends and you want to display a list as in Orkut you fire as many queries as there are friends, plus one for the object itself.

    users = User.find(:all)
    

    Then query for each user friend , like :

    users.each do |user|
      friend = Friend.find_by_user_id(user.id)
    end
    

    Here

    1) One query for all users.

    2) N query for N no. of users friends .

    Take a look on : Rails 3: Lazy loading versus eager loading

    Hope that will help you to understand this .

提交回复
热议问题