
パフォーマンス最適化
Database indexing、クエリ最適化、Bullet gem、rack-mini-profiler、並行処理/Puma、thread-safety、connection pool
26 面接問題·
Senior
1データベースのカラムに index を追加する主な目的は何ですか?
1
データベースのカラムに index を追加する主な目的は何ですか?
回答
index は最適化されたデータ構造(通常は B-tree)を作成することで検索クエリを高速化し、テーブルの全行をスキャンするのを回避します。index がない場合、データベースは sequential scan を実行し、大規模なテーブルでは非常に遅くなることがあります。WHERE 句、ORDER BY、結合で頻繁に使用されるカラムは、インデックス化の理想的な候補です。
2Rails の migration で user_id と created_at カラムに複合 index を作成するにはどうすればよいですか?
2
Rails の migration で user_id と created_at カラムに複合 index を作成するにはどうすればよいですか?
回答
add_index メソッドは複合 index を作成するためにカラムの配列を受け取ります。カラムの順序が重要です。index は最初に user_id、次に created_at でフィルタリングするクエリには効率的ですが、created_at のみでフィルタリングするクエリには効きません。複合 index は、カラムを左から右の順で使用するクエリに最適です。
3ActiveRecord の文脈における N+1 問題とは何ですか?
3
ActiveRecord の文脈における N+1 問題とは何ですか?
回答
N+1 問題は、最初のクエリで N 件のレコードを取得した後、各レコードの関連を読み込むために N 件の追加クエリが実行されるときに発生します。例えば、100 件の posts を読み込み、その後著者を取得するために 100 件の個別クエリを実行する場合です。このパターンはクエリ数を倍増させ、パフォーマンスを著しく低下させます。解決策は、includes、preload、または eager_load を使用して関連を 1~2 件のクエリで読み込むことです。
4
関連を事前に読み込むことで N+1 問題を解決するには、どの ActiveRecord メソッドを使用しますか?
5
Rails のパフォーマンス最適化における Bullet gem の役割は何ですか?
+23 面接問題
その他のRuby on Rails面接トピック
Rubyの基礎
Junior
25問Rubyのオブジェクト指向プログラミング
Junior
20問Rails の基礎
Junior
18問Routing & Controllers
Junior
22問ActiveRecord の基礎
Junior
25問Views と ERB テンプレート
Junior
20問ActiveRecord の関連付け
Mid-Level
24問高度なActiveRecordクエリ
Mid-Level
28問Rails フォーム
Mid-Level
20問認証と認可
Mid-Level
22問モダンな Asset Pipeline とフロントエンド
Mid-Level
18問Rails APIモード
Mid-Level
20問RSpecによるテスト
Mid-Level
24問ActiveJob & Background Jobs
Mid-Level
20問ActionCable & WebSockets
Mid-Level
18問ActionMailer
Mid-Level
18問ActiveStorage
Mid-Level
20問キャッシュ戦略
Mid-Level
20問高度なマイグレーション
Mid-Level
20問Rails Engines とモジュラーアプリ
Senior
18問Rails のデザインパターン
Senior
22問Rubyのメタプログラミング
Senior
20問Rails のセキュリティ
Senior
22問Rails での GraphQL
Senior
20問デプロイと本番環境
Senior
20問Monitoring & Logging
Senior
20問Rails アップグレード戦略
Senior
18問