タグ

SQLに関するtmftakeのブックマーク (5)

  • データベースの内部動作を知る

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

    データベースの内部動作を知る
  • 地獄のようによくわかるSQLテーブル結合 - こせきの技術日記

    テーブルのJOINが苦手でしたが、この例を思いついてからは、すっきりくっきり理解できるようになりました。むしろ頭から離れません……。 ※ INNER、OUTERは飾り。省略できる。 INNER JOINJOIN LEFT OUTER JOIN → LEFT JOIN RIGHT OUTER JOIN → RIGHT JOIN ※ ON ...=... をまとめて USING(属性) と書ける。 ※ 何で結合するか言うまでもない時は、NATURALを指定すると勝手にJOINしてくれる。NATURALにJOINして……。 ※ WHEREは結合した結果に作用する。 ※ 現実には上図のように1対1で結合しません。 ※ おまけ。CROSS JOIN。 こんなの使いません。 ブクマ用画像。

    地獄のようによくわかるSQLテーブル結合 - こせきの技術日記
    tmftake
    tmftake 2010/09/17
    おもしろい。
  • ORA-01036 - 妄想コーディング大好きPGの日々の徒然

    ORA-01036 変数の名前/ 数が無効です。 が発生しました。 理由不明。 SQL的には普通に実行できる。 色々消したりしてわかったこと。 SQLでコメントアウトされている部分があるとアウト。 where hoge.hoge1 = 1 hoge.hoge2 = 2 -- and hoge.hoge3 = 3的な感じで。 そういうの消したら動くようになった。 もげろおおおおおおおおおおおおおおおおおおおお 全然意味分からんちん。

    ORA-01036 - 妄想コーディング大好きPGの日々の徒然
    tmftake
    tmftake 2010/07/20
    おおおおおおおお
  • ダイレクト・パス・インサート - オラクル・Oracleをマスターするための基本と仕組み

    ダイレクト・パス・インサート (ダイレクト・ロード・インサート) ダイレクト・パス・インサートとは、データベースバッファを経由せずデータファイルへ 直接データを落とし込むという点から、ある特定条件下で非常に優れた処理方法である。 データベースのバッファ処理を経由しないことで高速に処理でき、バッファから他のキャッシュを追い出すことによるキャッシュヒット率の低下を防ぐこともできる。 高速に大量データをインサートさせるための手法 ダイレクト・パス・インサートによる高速のインサート処理にはトレードオフがあるが脅威的な速さを誇る。 数百万件オーダのデータの投入するのに数分とかからない(レコードサイズ、スペックに左右はされる) 通常のパスのローディングに比べて 数分の1 程度の時間で投入できる。 NOLOGGING 状態の場合 REDO ログが出力されない。(高速にはなる一方でフルバックアップするまで

  • 第6回 SQL流行間比較(2) 直近、直近の1つ前、そのまた1つ前… | gihyo.jp

    SQLアタマ養成講座 第6回SQL流行間比較(2) 直近⁠⁠、直近の1つ前⁠⁠、そのまた1つ前… 直近、直近の1つ前、そのまた1つ前… これで1つ前の日付を求めることはできるようになりました。ですが実務では、もう少し比較の範囲を広げて、「⁠直近の前」の日付や「直近の前のそのまた前」の日付、欲を言えば、一般的に「n個前の日付」と比較したい、という要望も生じることでしょう。つまり、行間比較の一般化です。 この要望に応えるため、まずはある日付を起点として、そこから順次過去へ遡った日付を求める方法を考えます。とりあえず3つ前まで求めるとすると、結果は図5のようにピラミッド型(というか階段型というか)になるでしょう。 図5 想定される実行結果 cur_date latest_1 latest_2 latest_3 -------- -------- -------- -------- 08-02-0

    第6回 SQL流行間比較(2) 直近、直近の1つ前、そのまた1つ前… | gihyo.jp
    tmftake
    tmftake 2010/06/18
  • 1