タグ

SQLに関するkagekinokoのブックマーク (11)

  • なぜMySQLのサブクエリは遅いのか。

    よくMySQLはサブクエリが弱いと言われるが、これは当だろうか?半分は当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリのカラムを参照しているサブクエリのことである。そし

    なぜMySQLのサブクエリは遅いのか。
    kagekinoko
    kagekinoko 2009/03/25
    こういう処理系固有の最適化の情報はありがたい
  • techbank.jp - このウェブサイトは販売用です! - techbank リソースおよび情報

    This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.

    kagekinoko
    kagekinoko 2009/02/18
    SqlDataSource.InsertCommand で挿入行のキーを同時に取得する
  • SQLエスケープにおける「\」の取り扱い

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2008年6月2日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり 昨日のエントリ(徳丸浩の日記 - そろそろSQLエスケープに関して一言いっとくか - SQLのエスケープ再考)は思いがけず多くの方に読んでいただいた。ありがとうございます。その中で高木浩光氏からブクマコメントを頂戴した。 \がescape用文字のDBで\のescapeが必須になる理由が明確に書かれてない。\'が与えられたとき'だけescapeすると…。自作escapeは危うい。「安全な…作り方」3版で追加の「3.失敗例」ではDBで用意されたescape機能しか推奨していない このうち、まず「\」のエスケープが必

  • – このドメインはお名前.comで取得されています。

    このドメインは お名前.com から取得されました。 お名前.com は GMOインターネット(株) が運営する国内シェアNo.1のドメイン登録サービスです。

    kagekinoko
    kagekinoko 2007/08/11
    MS-SQLの機能
  • SQL文をきれいにフォーマットしてくれる『SQL in Form』 | POP*POP

    長~いSQL文を見ているとどこがどういう構造になっているのかがわからなくなってきますよね。 そうしたときに使えそうなのが「SQL in Form」です。 一般向けのサービスではないですが、関係ある方には便利なのでは。 以下に簡単にご紹介。 ↑ たとえばこのようなSQL文。コメント分やインデントがわかりにくくなっています。 ↑ SQL in Formを通せばこの通り。構造がすっきりして見やすいですね。 変換する際には改行やインデント、空白の扱いなどの設定をすることもできます。またデスクトップ用のアプリもあるみたいですね。 ご利用は以下からどうぞ。無料で使えます。 » SQL Formatter / SQLFormatter formats SQL Statements

    kagekinoko
    kagekinoko 2007/05/20
    Outer join とかもうまくできるのかな?そのうち試す。
  • 数値項目に対するSQLインジェクション対策 - ockeghem's blog

    文字列項目に対するSQLインジェクション対策は、「'」(シングルクォート)や「\」(円マーク、バックスラッシュ)のエスケープであるが、数値リテラルなどはエスケープでは対策できない。 ここで、なぜ文字列に対してエスケープ処理が対策になるかを復習しておこう。それは「どんな文字(列)に対しても正しいSQL文を生成する」ためである。一方、数値の場合は、どんな数値であってもエスケープ処理などは元々必要ない。それにも関わらずSQLインジェクション脆弱性が混入するのは、数値を想定した変数に数値以外の文字が混入するからに他ならない。 すなわち、文字列の場合と数値の場合は、対策の前提が異なるわけである。 ここで、高木浩光氏からの批判に戻ると、関連する内容は以下のとおりである。 「対策は入力値の妥当性検証」 < それは違う。SQL文構成時直前に型変換(ないし型検査)する。文字列のクオート同様 以下、いくつかの

    数値項目に対するSQLインジェクション対策 - ockeghem's blog
    kagekinoko
    kagekinoko 2007/05/12
    数値はSQL処理系に渡す(出力する)前に型チェックすると考えればよいと思う。
  • CodeZine:RDBとSQL

    主にOracleを使ったデータウェアハウス業務に従事するDBエンジニア。 HPのコンテンツ『リレーショナル・データベースの世界』。 著書: 『達人に学ぶ SQL徹底指南書』(翔泳社、2008) 訳書: ジョー・セルコ『SQLパズル 第2版』(翔泳社、2007) 講演資料: 「みんなまとめて面倒みよう」(デブサミ2008、2008/02/13) 『Web+DB Press』(Vol.44~)で「SQLアタマアカデミー」を連載中。

    kagekinoko
    kagekinoko 2007/05/12
    ミックさん。ディープなSQLへの足がかりになる記事群。
  • PHPで複数のデータベースに対して移植性のあるSQLを書くためのTips

    データのサブセットを取得するこの機能はひじょうに役立ちますから、PHPクラスライブラリのADOdbに、私たちはSelectLimit( )という関数をもっています。これを使えば関数があなたに代わってSQLを書いてくれるので、関数の内部に実装の詳細を隠すことができます。 $connection->SelectLimit('select * from table', 10); Selects: Fetch Modes PHPではデータベースレコードを配列として取得できます。配列がフィールド名あるいは数字でインデックスされることをあなたは選ぶことができます。けれど低レベルのPHPデータベースドライバのあいだでインデックスのしかたは一貫していません。ADOdbではあなたの好みのモードを選択することができます。コードのはじめで、$ADODB_FETCH_MODE変数に定数ADODB_FETCH

    kagekinoko
    kagekinoko 2007/05/10
    参考になりそう
  • 問題の提起 - ockeghem's blog

  • リレーショナル・データベースの世界

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    kagekinoko
    kagekinoko 2006/11/02
    コードもウンチクも参考になる
  • HAVING句の力:CodeZine

    はじめに SQLというのは変わった言語です。こういう印象は人によって差があると思いますが、おそらく最初に手続き型言語を学んだ正統派のプログラマやSEほど強くそう感じると思います。 SQLに違和感を感じる理由は、いくつか考えられます。第一に、SQLが「集合指向」という発想に基づいて設計された言語で、この設計方針を持つ言語が少ないことです。そして第二に、それに劣らず大きいのが、最初に学んだ言語のスキーマ(概念の枠組み)が心理的モデルとして固定され、それを通して世界を見るようになるため、異なるスキーマを持つ言語の理解が妨げられることです。 稿では、HAVING句のさまざまな応用方法を紹介していきますが、その際、手続き型言語とSQLの考え方を比較します。それによって、私たちが手続き型言語で身に付けた無意識の心理的モデルを自覚し、集合指向という発想に感じる違和感を軽減したいと考えています。 今回は

    kagekinoko
    kagekinoko 2006/11/02
    あとでしっかり読む
  • 1