DAY30 count / find_by_sql メソッド

TOKHEE·2024년 5월 9일

1. count メソッド

  • count メソッドは特定の条件を満たすレコードの数をデータベースから直接計算して返します
  • 大量のデータセットでも迅速に結果を提供
  • countActiveRecord::Relation オブジェクトに適用されます
  • 必要に応じて、列名を引数として受け取り、該当する列のレコード数を数えることができます。
  • SQLの COUNT 関数を直接使用
    => データを全て読み込むことなく、迅速に数を算出できます
  • ただし、ジョインや複雑なクエリ構造が含まれる場合は、クエリの最適化に注意が必要です
# 例:active 状態が true のユーザーの数を数える
active_users_count = User.where(active: true).count

2. find_by_sql メソッド

  • find_by_sql メソッドは開発者が直接書いたSQLクエリを実行することができます
  • このメソッドは標準の ActiveRecord クエリメソッドで処理が困難な複雑なデータベースクエリを実行する際に役立ちます
  • 戻された結果を ActiveRecord オブジェクトにマッピングし、その結果をすぐに Rails アプリケーションで利用可能
  • SQLを直接記述するため、SQLインジェクションなどのセキュリティ問題に注意が必要
  • クエリが複雑になるほど、メンテナンスが困難になる可能性があるため、使用時にはクエリの安全性と効率性を検証するプロセスが必要です。
# 例:年齢が30歳以上のユーザーを検索
sql = "SELECT * FROM users WHERE age >= 30"
older_users = User.find_by_sql(sql)

0개의 댓글