Skip to content

Instantly share code, notes, and snippets.

@bbonamin
Created May 22, 2012 18:37
Show Gist options
  • Select an option

  • Save bbonamin/2770829 to your computer and use it in GitHub Desktop.

Select an option

Save bbonamin/2770829 to your computer and use it in GitHub Desktop.
Rails: Query comparison between a 3-level nested association.
Page Load (0.3ms) SELECT `pages`.* FROM `pages` 
ObjectMap Load (0.4ms) SELECT `object_maps`.* FROM `object_maps` WHERE `object_maps`.`page_id` = 1
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 1
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 2
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 17
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 18
ObjectMap Load (0.3ms) SELECT `object_maps`.* FROM `object_maps` WHERE `object_maps`.`page_id` = 3
ObjectProperty Load (0.2ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 28
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 29
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 30
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 31
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 32
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 45
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 46
ObjectMap Load (0.3ms) SELECT `object_maps`.* FROM `object_maps` WHERE `object_maps`.`page_id` = 4
ObjectProperty Load (0.4ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 33
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 34
ObjectProperty Load (0.4ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 35
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 36
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 37
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 38
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 39
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 40
ObjectProperty Load (0.4ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 41
ObjectProperty Load (0.4ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 42
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 43
ObjectMap Load (0.3ms) SELECT `object_maps`.* FROM `object_maps` WHERE `object_maps`.`page_id` = 15
ObjectProperty Load (0.5ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 44
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 47
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 48
ObjectProperty Load (0.4ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 49
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 50
ObjectProperty Load (0.8ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 51
ObjectMap Load (0.4ms) SELECT `object_maps`.* FROM `object_maps` WHERE `object_maps`.`page_id` = 19
ObjectMap Load (0.4ms) SELECT `object_maps`.* FROM `object_maps` WHERE `object_maps`.`page_id` = 27
ObjectMap Load (0.4ms) SELECT `object_maps`.* FROM `object_maps` WHERE `object_maps`.`page_id` = 28
ObjectProperty Load (0.4ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` = 52
Rendered layouts/_flash.html.haml (0.1ms)
Page Load (0.2ms) SELECT `pages`.* FROM `pages` 
ObjectMap Load (0.4ms) SELECT `object_maps`.* FROM `object_maps` WHERE `object_maps`.`page_id` IN (1, 3, 4, 15, 19, 27, 28)
ObjectProperty Load (0.3ms) SELECT `object_properties`.* FROM `object_properties` WHERE `object_properties`.`object_map_id` IN (1, 2, 17, 18, 28, 29, 30, 31, 32, 45, 46, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 47, 48, 49, 50, 51, 52)
Rendered layouts/_flash.html.haml (0.1ms)
#Associations without eager loading cause the first log
Page.all.each do |page|
#...
page.object_maps.each do |object_map|
#...
object_map.object_properties.each do |object_property|
#...
end
end
end
#Associations with eager loading cause the second log
Page.includes(object_maps: :object_properties).all.each do |page|
#...
page.object_maps.each do |object_map|
#...
object_map.object_properties.each do |object_property|
#...
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment