2011-06-20 3 views
2

私はRoRの土地に新しい、非ダイナミックな言語から来て、私は起源ではなかった、そしてまだコンベンション(すなわち '魔法'それを引き起こしたことが分かるまで)、問題をデバッグしようとしています。この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"クエリを1回だけ実行します。 –

答えて

2

私のカウントでは、8つのクエリ、7つの記述、2つのキャッシュされたクエリがあります。

実際にデータベースクエリによってボトルネックになっているアプリケーションを扱う場合、生成されるクエリの数を最適化するいくつかの方法があります。スコープを設定し、インクルードを使用すると、リレーションを越えてモデルをフェッチするときにクエリの数を減らすことができます。

Railsは通常、同じクエリを2回発行するのではなく、キャッシュするため、最後の2つのクエリでCACHEで始まるのはなぜですか。

+0

コメントありがとうございました。リリース条件では、状況がより最適になると聞くのは良いことです。 – renegade

関連する問題