タグ

Railsとsqlに関するapo-coのブックマーク (5)

  • ActiveRecordが生成するSQLをRailsのコンソールで確認する方法 - donghai821の日記

    メモ ActiveRecordが生成するSQLは通常、/log/development.logなどのログファイルに吐かれるが、これをRailsのコンソールに出力する方法。 実はとても簡単でログの吐き出し先を標準出力に指定するだけ。 ruby script/console # ログの出力先を指定する。以上。 ActiveRecord::Base.logger = Logger.new(STDOUT) # ActiveRecordを操作すると以下のようにSQLのログが出力される。 User.find(:first) [4;36;1mSQL (0.0ms)[0m [0;1mSET NAMES 'utf8'[0m [4;35;1mSQL (0.0ms)[0m [0mSET SQL_AUTO_IS_NULL=0[0m [4;36;1mUser Load (0.0ms)[0m [0;1mSELECT

    ActiveRecordが生成するSQLをRailsのコンソールで確認する方法 - donghai821の日記
  • Matzにっき(2007-07-11)

    << 2007/07/ 1 1. [教会] 第一安息日 2 1. 2ちゃんねる実況中継 あるベルギー人から見た日 2. Programming for the masses 3. とりあえず暇だったし何となく始めたブログ - flymake でリアルタイム文法チェック 4. cdiggins.com >> My Goal: Naive Programming 3 1. mixiが自社開発の検索エンジンに移行、ウェブ検索はYSTに:ニュース - CNET Japan 2. [Ruby] CodeZine:Java開発者のためのRubyガイド(Word, 言語比較) 3. 旭川に移動。 4. [Ruby] 世界に広がるオブジェクト指向スクリプト言語〜Rubyについて開発者が語る 4 1. 旭山動物園 2. インタビュー 3. [Ruby] Rhino on Rails 4. [言語] ITm

  • countよりもcount_by_sqlの方がいいかも - おもしろwebサービス開発日記

    前書いた書きかけのメモを発見したので加筆して載せてみます。ちなみにこの話はMysql(InnoDB)利用時限定です。 モデルのcountメソッドは SELECT count(*) AS count_all FROM `blogs` のようなSQL文を発行します。このようなSQL文では、基的に主キーインデックスによる全索引検索が行われます。通常、インデックスだけを読み込む全索引検索のほうが、テーブルだけを読み込む全表検索よりもI/O回数が少なくなるため高速になりますが、InnoDBの主キーインデックスは他の列値と直結している仕様で(この場合は)余計な列値を読み込むことになるため、あまり高速になりません。主キー以外のインデックスを利用した方が高速になるようです。 実際に試してみた rails2.3.2(たぶん), mysql5.0.77で試しました。 適当なrailsプロジェクトを作成し、s

    countよりもcount_by_sqlの方がいいかも - おもしろwebサービス開発日記
  • 2008-11-23

    読んでいたコードで面白いテクニックを使っていたのでメモ。 Rails のActiveRecord のfind 系メソッドは優秀だと思うけど、自分でSQL を書きたい時があると思います。そこで、find_by_sql を使うわけですが、その際、大規模なSQL を書く場合のTips です。 環境 ruby 1.8.7 rails 2.2.2 パラメータによってSQL 自体を変えたい場合 例えば、SQL が以下だったとします。 RDBMSSQLite3 SELECT * from users where name = xxx; これを扱う、find_by_sql が以下のような感じ。 User.find_by_sql(["select * from users where name = :name", {:name => 'bob'}]) #=> [#<User id: 1, name: "

    2008-11-23
    apo-co
    apo-co 2009/04/21
    SQLにもERBが使える
  • SELECT構文:JOINを使ってテーブルを結合する - 第3章 SQL構文 - [SMART]

    JOINは複数のテーブルを連結させるために用意されたキーワードです。単純にテーブルを連結させる以外にも、LEFT JOIN ONやUSINGなどの便利なキーワードがあるので、いろいろ試してみましょう。 リレーションによる関係付け テーブルの作成とデータの挿入 ここでは、購入履歴テーブル(テーブル名=purchase)、商品テーブル(テーブル名=goods)、顧客テーブル(テーブル名=customer)を作成し、それを使って説明していきます。CREATE TABLEとINSERTを使って、テーブルの作成とデータの挿入をしておきましょう。 テーブルを作成する際の手順は、CREATE TABLEに続き、作成するテーブル名を指定します。次に、カッコ内にフィールドの定義を列挙していきます。フィールドの定義はフィールド名とデータ型、それに制約などを必要なだけ宣言します。 CREATE TABLE構文

    SELECT構文:JOINを使ってテーブルを結合する - 第3章 SQL構文 - [SMART]
  • 1