タグ

SQLに関するamigogrjのブックマーク (32)

  • 複合主キーを避けるべき理由 - 虎塚

    データベース設計の話をしていて、「連番の主キーは業務上意味のないデータだから、テーブルに持たせるのはムダだ。複合主キーにするべき」という意見を聞く機会がありました。 脊髄反射で「ないわー」と思ったものの、理由を上手く説明できなかったので、改めて考えてみました。 その結果、次のような結論に至りました。 単一の連番カラムによる主キーと、複合カラムによる主キーとで迷ったら 実装をシンプルにし、業務変更の影響範囲を小さくするために、複合主キーを避ける というわけで、調べたことや考えたことをメモしておきます。# 間違っている部分があれば、教えていただけると嬉しいです。 (2011/07/25 追記)複合主キーとサロゲートキーについては、要件やシステムに依存して多様な判断がありうると思います。にもかかわらず、「避けるべき」というタイトルにしたのは極端でした。申し訳ありません。ご指摘下さった皆さん、あり

    複合主キーを避けるべき理由 - 虎塚
  • 最短かつ最速にアクセスする「DB高速化技術」(前編):ITpro

    ポイント ・高度なインデックスやジョインを利用し,最短経路でデータにアクセス ・メモリー不足を自律的に解消し,キャッシュのヒット率を高める ・インメモリーDBは全データをメモリーで処理し,高速化を図る 目的地に早く到着したいなら,最短の経路を最速で行けばよい。これはデータベース(DB)でも同様だ(図1)。インデックスなどを使ってデータへの最短経路を見つけ,メモリー・アクセスを増やして,最速でたどり着く。DBにはそんな技術が詰まっている。 図1●データベース高速化技術のポイント ビットマップ・インデックスなどを使い、データにたどり着く最短の道を選ぶ。また、できるだけメモリーにデータをキャッシュさせておくことで、アクセスのスピードを上げる、という二つのポイントがある [画像のクリックで拡大表示] 以下では,(1)データにたどり着く最短の道を選ぶ仕組みと,(2)アクセスのスピードを上げる仕組みの

    最短かつ最速にアクセスする「DB高速化技術」(前編):ITpro
  • グーグル、NoSQL軽量ライブラリ「LevelDB」を公開。ChromeブラウザのIndexedDBとして採用

    LevelDBSQLをサポートせず、クライアント/サーバ型でもなく、シングルプロセスからアクセスされることを想定したいわゆるNoSQLの高速なキーバリュー型データストアを実現するためのライトウェイトなライブラリだと説明されています。 ChromeブラウザでHTML5の仕様として策定中のIndexedDBを実装するものとして開発されたようです(ドキュメントに明記されていないのですが)。 LevelDBを開発した理由 LevelDBのWebサイトによると、LevelDBは以下の主な機能を備えています。 基的な操作は、Put(key,value), Get(key), Delete(key) 1つのトランザクションとして複数の変更操作が可能 データは自動的に圧縮し保存される Hacker Newsの記事によると、当初はLevelDBを開発する代わりに平林幹雄氏が開発したTokyo Cabin

    グーグル、NoSQL軽量ライブラリ「LevelDB」を公開。ChromeブラウザのIndexedDBとして採用
  • 事前定義例外 - オラクル・Oracleをマスターするための基本と仕組み

    COLLECTION_IS_NULL アトミック・ヌル のコレクションに対して操作を行なった場合 コンストラクタを呼び出してコレクションを初期化する。 CURSOR_ALREADY_OPEN カーソルの二重オープン DUP_VAL_ON_INDEX 一意性の制約違反 ⇒ ORA-00001: 一意制約に反しています INVALID_CURSOR オープンしていない カーソル に操作している、以下の IF 処理を参考に IF cursor_name%ISOPEN THEN 〜 INVALID_NUMBER 数値に変換できない。SELECT DECODE(num_date, 1, 'aaa') 〜 などの数値項目に対して文字を変換すると発生したりする。(NVL 関数 でも同じ) ⇒ ORA-01722: 数値が無効です。 LOGIN_DENIED ログインの失敗(拒否) NO_DATA_FOU

  • スキーマを作成する手順に必要な SQL を手に入れる :【Oracle】

    上から順に作業して行けば、状況を確認しながらスキーマを作成できます 識別スキーマ名 = ユーザ名です。以降、この文字列を使います。 Oracle では、大文字で登録されるので、入力した文字列を大文字に変換します。 ( パスワードは大文字小文字を区別します ) テーブルスペースは 識別スキーマ名AREA.ora となります。.ora は昔のデータファイルの拡張子ですが、ユーザ作成を区別 する為にも都合がいいので使用しています。 Oracle データディレクトリ は、PC によって違うはずですが、テーブルスペース確認用 SQLで、調べる事ができます。ここでは、デフォルトとして Oracle 11g XE のデータディレクトリを表示しています。 パスワードは、ユーザを作成する時にのみ必要ですが、 後で変更できるので、ユーザー名と同じをデフォルトにしています。 テーブルスペース (新規作成のみです

  • ソーシャルゲームのためのMySQL入門その2 | BLOG - DeNA Engineering

    こんにちはこんにちは。11インチMacBook Airが欲しくてたまらないiwanagaです。 前回の記事 が幸いにもご好評を頂けた様で非常にうれしいです。嬉しくなって、ついがんばって第2弾を書いてしまいました。引き続き、ソーシャルゲームでよく使われるテーブルタイプ毎にちょっとしたテクニックを紹介していきます。 今回はちょっとライトな感じ&読み物になってしまっていますが「ユーザID単位で1つだけ持つデータ」と「パラメータなどのマスターデータ」についてご説明したいと思います。ちなみに次回はInnoDBのデータ構造の簡単な説明と複合プライマリーキーのデータについて、その次で紹介し損ねたちょっとマニアックなテクニックや性能管理のための手法を紹介することを予定しています。 その前に。。。 先日行われた JAPAN INNOVATION LEADERS SUMMIT で弊社松信が「ソーシャルゲーム

    ソーシャルゲームのためのMySQL入門その2 | BLOG - DeNA Engineering
  • 窓の杜 - 【REVIEW】SQL文の入力支援やER図作成に優れた高機能なSQL開発環境「A5:SQL Mk-2」

    「A5:SQL Mk-2」は、SQL文の入力支援やER図作成などの機能を備えた高機能なSQL開発環境。Windows 98/2000/XP/Server 2003/Vista/Server 2008/Vista x64に対応する寄付歓迎のフリーソフトで、作者のWebサイトからダウンロードできる。 ソフトは、SQL文の作成・実行を行える汎用のデータベース開発環境。ADOやODBCドライバーを利用して各種データベースに接続可能で、ソフトで作成したSQL文を実行し、その結果を表示できる。また、SQLの実行計画を取得したり、実行結果を「Excel」へ出力することも可能。 画面はサイドバーと編集画面の2つに分割されており、サイドバーではデータベースおよび関連するスキーマ・テーブル・ビューといった項目がツリー形式で表示される。編集画面はタブ切り替え式になっており、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テーブル結合 - こせきの技術日記
  • サービス終了のお知らせ

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

  • バルクフェッチ - オラクル・Oracle PL/SQL 入門

    PL/SQL によるバルクフェッチ処理 PL/SQL の カーソル処理 には 1レコード単位にレコードを取り出す方式 だけではなく 複数のレコードを1回の処理で行うバルク処理がある。 バルク処理は1回の IO で大量のレコードを SELECT してそれを一度に FETCH 処理するために バッチ処理などメモリ資源を十分に確保できる状態では非常に効率よく実行することができる。 バルクフェッチ(取り出し)にはレコード型の コレクション型を使用するとコーディング量が減りメンテナンスも容易になる。 単一データの配列を複数使用する方法もあるが Oracle 9i からはレコード全体の INSERT、UPDATE がサポートされているのでレコード型によるコレクション型を使用するほうが都合良いだろう。 バルクフェッチの例 (FETCH 〜 BULK COLLECT) カーソル定義レコード型のコレクション

  • バルクインサート - オラクル・Oracle PL/SQL 入門

    PL/SQL によるバルクインサート処理 バルクインサート処理 (BULK INSERT:FORALL 構文) は 1 回のコンテキストスイッチで大量のレコードを処理(バルク処理)することができる。 このコンテキストスイッチ(PL/SQL エンジンと SQL エンジンの間で発生する処理のやり取り) の回数を減らすことによって大量データの処理時のレスポンスを向上することが可能になる。 このバルクインサート例ではバルクフェッチ(取り出し)とバルクインサートに レコード型 の コレクション を 使用している。バルクインサートに対してレコード型を使用できるのは Oracle 9i 以降となる。 Oracle 8i 以前でのバルクインサート処理 Oracle 8i 以前ではレコード型によるバルクインサートには対応していない。 フィールド数が多いとやや面倒になるが、バルクインサート処理自体は Orac

  • WEBプログラマー必見!WEB脆弱性基礎知識最速マスター - 燈明日記

    以下は、WEBプログラマー用のWEB脆弱性の基礎知識の一覧です。 WEBプログラマーの人はこれを読めばWEB脆弱性の基礎をマスターしてWEBプログラムを書くことができるようになっているかもです。 また、WEB脆弱性の簡易リファレンスとしても少し利用できるかもしれません。 WEBアプリケーションを開発するには、開発要件書やプログラム仕様書通りに開発すれば良いというわけにはいきません。 そう、WEB脆弱性を狙う悪意のユーザにも対処しないといけないのです。 今回、WEBアプリケーションを開発にあたってのWEB脆弱性を、以下の一覧にまとめてみました。 このまとめがWEBアプリケーション開発の参考になれば幸いです。 インジェクション クロスサイト・スクリプティング セッション・ハイジャック アクセス制御や認可制御の欠落 ディレクトリ・トラバーサル(Directory Traversal) CSRF(

    WEBプログラマー必見!WEB脆弱性基礎知識最速マスター - 燈明日記
  • Oracle Database SQLリファレンス -- 目次

    ヘッダーをスキップ Oracle Database SQLリファレンス 10g リリース2(10.2) B19201-02 索引 目次 タイトルおよび著作権情報 はじめに 対象読者 ドキュメントのアクセシビリティについて 関連ドキュメント 表記規則 サポートおよびサービス SQLの新機能 Oracle Database 10g リリース2(10.2)でのSQLの新機能 Oracle Database 10g リリース1(10.1)でのSQLの新機能 Vol.1 1  概要 SQL歴史 SQL規格 SQLの特長 すべてのリレーショナル・データベースに共通の言語 最新の機能拡張 字句規則 ツール製品のサポート 2  Oracle SQLの基要素 データ型 Oracleの組込みデータ型 CHARデータ型 NCHARデータ型 NVARCHAR2データ型 VARCHAR2データ型 VARCHAR

  • Oracle SQL (順序:SEQUENCE)

    順序の生成 SQL> CREATE SEQUENCE TS_伝票番号; 順序が作成されました。 これにより順序名が"TS_伝票番号"で全てのパラメータはデフォルト値で生成されました。 実際に順序のパラメータがその様に設定されたかは、USER_SEQUENCESデータディクショナリビューを検索すると様子がわかります。 SQL> SELECT * FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'TS_伝票番号'; SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER ------------------------------ ---------- ---------- ------------ - - ---------- ----------- TS_伝票番号

    amigogrj
    amigogrj 2010/04/21
    順列になっているキー値などの取得方法
  • oklab -

    最近ではコンピューター、ウェブ、モバイルでゲームを楽しめるようになりました。これらのゲームプログラミングについて学びましょう。 ゲームプログラミングの特徴 ゲームプログラミングは比較的新しいジャンルです。 ゲーム開発に使用される言語は、C#、C++JavaScriptSwiftRubyです。ゲームでは通常のアプリケーションと異なり複雑なビジュアルを操作するパフォーマンスと速度が要求されますので、プログラム言語もそれに特化している言語がおすすめです。 ゲームプログラミングは今後も人気の職種です。習得してステップアップを目指しましょう。 Oracle PLのプログラミング言語について学びましょう。 Oracle PLの特徴 SQL、T-SQLと同様にOracle PLもデータベースを処理するための言語です。違いとしてはOracle PLは世界最大のデータベースのひとつであるOracle

  • サービス終了のお知らせ

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

  • OracleとSQL Server、チューニングの違いを知る

    オプティマイザと統計情報 SQL ServerもOracleSQLを実行するに当たり、「オプティマイザ」と呼ばれるプログラムが、どう処理したら効率がよいかを解析し、「実行計画」を立てます。SQLの実行パフォーマンスを向上させるためには、どうすれば効率のよい実行計画になるかを探る必要があります。 SQL実行計画の確認手順 SQL ServerとOracleのどちらも、GUIまたはテキストから実行計画を確認できます。Oracleの場合はまずutlxplan.sqlという製品付属のスクリプトを実行し、実行計画を取得する準備を整える必要があります。SQL Serverの場合、特に実行計画を取得するための準備はありません。 実行計画をGUIで確認するには、Oracleでは「Performance Manager」のSQL実行計画ツールを使用します(図5)。SQL Serverでは「クエリアナライザ

    OracleとSQL Server、チューニングの違いを知る
  • プラン・スタビリティの使用方法

    20 プラン・スタビリティの使用方法 この章では、プラン・スタビリティを使用してパフォーマンス特性を保持する方法について説明します。プラン・スタビリティは、Oracleの新規リリースにアップグレードする際に、ルールベース・オプティマイザから問合せオプティマイザに移行する場合にも役立ちます。 この章には次の項があります。 実行計画を保持するためのプラン・スタビリティの使用方法 問合せオプティマイザのアップグレードによるプラン・スタビリティの使用方法 注意: ストアド・アウトラインは、SQL計画の管理を優先するために将来のリリースではサポートされなくなります。Oracle Database 11gリリース1(11.1)では、ストアド・アウトラインは以前のリリースと同様に引き続き機能します。ただし、新規アプリケーションではSQL計画の管理を使用することを強くお薦めします。SQL計画の管理により作

  • 門外不出のOracle現場ワザ 第4章

    目次 Part1 SQLを最適化するコストベースオプティマイザの基機能 はじめに CBOを使用する理由 SQL文の処理におけるオプティマイザの役割 Part2 CBOは何を見てどう判断するのか CBOのアクセスパス選択方法 ヒストグラム CBOとバインド変数 バインドピーク(Bind peek) I/O + CPUコストモデル CBOとフルスキャン CBOとキャッシュ効率 CBOとパラメータ CBOと結合順序 Part3 オプティマイザ統計の管理 自動統計収集 統計履歴の自動保存 動的サンプリング Part4 実行計画の固定と自動チューニングオプティマイザの活用方法 実行計画を固定する機能 自動チューニングオプティマイザ CBOを使いこなすためには Part4 実行計画の固定と自動チューニングオプティマイザの活用方法 実行計画を固定する機能 オプティマイザヒント 統計情報の再収集によって

  • PL/SQLアプリケーションのパフォーマンスのチューニング

    11 PL/SQLアプリケーションのパフォーマンスのチューニング この章では、効率的なPL/SQLコードを記述する方法および既存のコードを高速化する方法について説明します。 この章の項目は、次のとおりです。 PL/SQLコンパイル用の初期化パラメータ PL/SQLでプログラムを最適化する方法 PL/SQLのパフォーマンス問題を回避するためのガイドライン PL/SQLプログラムのプロファイルおよびトレース バルクSQLによる、DML文および問合せのループ・オーバーヘッドの削減 PL/SQLでの計算集中型プログラムの記述 EXECUTE IMMEDIATEおよびカーソル変数を使用した動的SQLのチューニング NOCOPYコンパイラ・ヒントを使用したPL/SQLプロシージャ・コールのチューニング システム固有の実行のためのPL/SQLコードのコンパイル パイプライン・ファンクションによる変換の設