2011-06-20 69 views
2

我是来自RoR土地的全新品牌,来自20年来的非动态语言,并致力于一款我没有创作的应用程序,并且仍然试图让我的头脑在所有通过约定发生的事情(即“神奇”直到你知道是什么导致它)并尝试调试问题。这个Rails查询和它看起来一样糟糕吗?

我的问题不是特定于我追踪的问题,而是想知道这一点;这个调试输出真的告诉我,10个独立的调用正在发生在SQL?

Processing OwnersController#stest (for 127.0.0.1 at 2011-06-20 11:08:26) [GET] 
    Parameters: {"action"=>"stest", "controller"=>"owners"} 
User Columns (4.8ms) SHOW FIELDS FROM `users` 
User Load (0.4ms) SELECT * FROM `users` WHERE (`users`.`id` = 45241) LIMIT 1 
Owner Columns (4.8ms) SHOW FIELDS FROM `users` 
Provider Load (121.6ms) SELECT * FROM `providers` WHERE (`providers`.owner_id = 45241) LIMIT 1 
Provider Columns (4.1ms) SHOW FIELDS FROM `providers` 
FeedItem Load (43.2ms) SELECT * FROM `feed_items` WHERE (((4 & item_id) > 0)) AND ((feed_items.created_at >= '2011-06-13 15:08:27') AND (feed_items.event = 5)) GROUP BY initiator_type, initiator_id ORDER BY id ASC 
Rendering template within layouts/front_end 
Rendering owners/stest 
FeedItem Columns (2.0ms) SHOW FIELDS FROM `feed_items` 
User Load (0.4ms) SELECT * FROM `users` WHERE (`users`.`id` = 45268) 
Parent Columns (4.7ms) SHOW FIELDS FROM `users` 
Rendered feed_items/_user_saved_provider_search (23.4ms) 
User Load (0.4ms) SELECT * FROM `users` WHERE (`users`.`id` = 45269) 
Rendered feed_items/_user_saved_provider_search (4.3ms) 
User Load (0.4ms) SELECT * FROM `users` WHERE (`users`.`id` = 45236) 
Rendered feed_items/_user_saved_provider_search (3.7ms) 
InHome Columns (3.7ms) SHOW FIELDS FROM `providers` 
ZipCode Load (32.5ms) SELECT * FROM `zip_codes` WHERE (`zip_codes`.`city` = 'Plano') LIMIT 1 
City Columns (3.1ms) SHOW FIELDS FROM `cities` 
City Load (0.4ms) SELECT * FROM `cities` WHERE (`cities`.`name` = 'Plano') LIMIT 1 
CACHE (0.0ms) SELECT * FROM `zip_codes` WHERE (`zip_codes`.`city` = 'Plano') LIMIT 1 
CACHE (0.0ms) SELECT * FROM `cities` WHERE (`cities`.`name` = 'Plano') LIMIT 1 
Rendered layouts/_extra_links (1.7ms) 
Completed in 552ms (View: 81, DB: 230) | 200 OK [http://0.0.0.0/owners/stest] 
+2

是的,它**真的是**。 – meagar

+0

看起来像正常输出给我。你应该尽量保持sql查询的最小限度,但有时候看起来像这样。习惯它:) – Mirko

+2

我敢打赌,在开发模式之外,它会在第一次使用每个AR模型时执行“SHOW FIELDS”查询。 –

回答

2

我的数据有8个查询,7个描述和2个缓存查询。

如果您处理实际上受数据库查询瓶颈的应用程序,有几种方法可以优化生成的查询数。设置范围和使用包含可以减少跨关系提取模型时的查询数量。

Rails通常也不会发出两次相同的查询,而是缓存它,因此为什么这些行以最后两个查询的CACHE开始。

+0

感谢大家的意见。很高兴听到在释放条件下事情可能会更加优化。 – renegade

相关问题