タグ

sqlに関するwater-moonのブックマーク (4)

  • CakePHP1.3でデバッグレベルが0の時でもSQLのログを記録する方法

    CakePHPではデバッグレベルが2の場合、レンダリングした画面の下部に発行したSQLのログを表示してくれます。 この機能は非常に便利ですが、番環境などでデバッグレベルを0にしていると、発行したSQLを確認する手段がありません。 番環境で何かしらデータベースエラーが発生した場合に、発行されているSQLを確認したいと思っても、そのままでは方法が無いのが現状です。 そこで、利用しているデータベースのドライバクラスを改良して、CakePHPのデバッグレベルに関わらず、発行したSQLをログファイルに保存できるように改造してみます。 ロギング用のデータベースドライバを作成 CakePHPのコアファイルに手を入れるのは避けたいので、データベースのドライバクラスを継承したログファイル保存用のドライバクラスを作成します。 ここではMySQLを利用する場合を想定します。 他のデータベースを利用している場

    CakePHP1.3でデバッグレベルが0の時でもSQLのログを記録する方法
  • データベースの内部動作を知る

    SQLのプログラミングは奥が深い。特にパフォーマンスの観点から、そう言えるだろう。 みなさんご承知の通り、同じ結果を出すプログラムでも、SQLの書き方次第で処理時間に何倍もの差が生じ得る。効率の悪いSQLを書いてしまう原因は、多くの場合、リレーショナルデータベースの内部動作やアプリケーションに関する理解不足である。両者をよく知った上で最適なSQLを書けるようになることは、システムエンジニアとしての重要なスキルの一つである。 特集『基礎から理解するデータベースのしくみ』では、リレーショナルデータベースの内部動作について、基的な部分を分かりやすく解説している。SQLプログラミングに役立つことはもちろん、SQLチューニングやデータベース設計のための基礎知識としても不可欠だ。 イントロダクション ブラックボックスのままでいいの? Part 1:SQL文はどのように実行されるのか SQL実行までの

    データベースの内部動作を知る
  • 複数の集計(COUNTなど)を1回のSQLで行う方法 - たこはちの「へのかっぱ」日記

    たとえば「select count(*) from A」などでテーブルAに登録された件数が計数できる。同じようにテーブルBについても、あるいはwhere句を指定して計数したいなど、いろいろな集計を1回のSQL文の発行で行う方法だ。union句を使えばいいだけのことなのだが、ちょっと工夫するとプログラム上で結構、汎用的に書けそうだ。 select count(*) from A union select count(*) from A where NAME is not null union select count(*) from A where UPDATED < '2010/02/06'通常なら3回のSQL発行が必要そうなところを1回の発行で済ませることができる。ここまでは大体の方がご存知だろう。ただ、上記のSQLだけでは正しく検索されない場合もある。これを以下のように補完してやる。

    複数の集計(COUNTなど)を1回のSQLで行う方法 - たこはちの「へのかっぱ」日記
  • SQLを使うなら理解しておきたいアルゴリズム?(というか、select文の書き方) - where・order by・join・group by - 何かしらの言語による記述を解析する日記

    SQLのselect文の書き方の覚書です。 なお、文中の動作確認は「mysql Ver 5.0.67」で行いました。 2009/10/05 13:30 追記 予想外に多くのアクセスとブクマをいただき、正直驚いております。 文はsqlの内部処理には一切触れておりません。ごく普通のsqlの書き方にのみ触れています。 釣りのつもりはありませんが、釣られたと感じた方にはごめんなさい。 目次 説明に使用するデータ構造?(というかテーブル) 抽出(where句) ソート(order by句) ソートの例(昇順) ソートの例(降順) 結合(join句) 集計(group by句) 関連記事 説明に使用するデータ構造(というかテーブル) select文の使い方を説明するために、以下のようなテーブルを使います。 create table countries ( name nvarchar(30), cu

    SQLを使うなら理解しておきたいアルゴリズム?(というか、select文の書き方) - where・order by・join・group by - 何かしらの言語による記述を解析する日記
  • 1