タグ

2011年7月28日のブックマーク (4件)

  • 自己結合の使い方

    はじめに SQLが提供する結合演算には、その特徴に応じて内部結合、外部結合、クロス結合などさまざまな名前が与えられています。普通、これらの結合の多くは、異なるテーブルまたはビューを対象として行われます。しかし、SQLは結合が同一のテーブルまたはビューに適用されることを禁止していません。同一のテーブルを対象に行う結合を「自己結合(self join)」と呼びます。自己結合は、使いこなせば非常に便利な技術ですが、動作がイメージしにくいため敬遠されがちです。そこで稿では、この自己結合の便利さを例題を通して学び、その動作を分かりやすく解説します。 自己結合を理解することは、実務上のテクニックを身につける以外に、もう一つ利点があります。それは、集合指向(set-oriented)というSQLの重要な特徴を理解できることです。オブジェクト指向言語が世界をオブジェクトとして表現するように、SQLは世界

    自己結合の使い方
  • MySQLのEXPLAINを徹底解説!!

    以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ

    MySQLのEXPLAINを徹底解説!!
  • 【DB概論】データベース設計の重要性とデータ中心アプローチ

    第4回へ これまで、データベース設計に関する話を中心に説明してきましたが、システム構築の全体工程を見る中で、他の開発工程との関連を見ておきます。 次の図で、システム構築の際の全体工程の概要を見ることができます。 データベース設計の工程が他の工程とどのように関わっているかを確認します。 システム構築工程の他工程との関係で、特にデータベース設計と関係が深いところを説明します。 システム化計画でシステム全体の方向性を鳥撤した上で、データベース設計の概念設計に入ります。ここは、トップダウンでシステムの全体像をつかんだ上でデータベースの設計をする重要な工程です。システム化計画で出た企業の経営層の戦略などをインプットにして、将来のシステム像をにらんだ設計を行う必要があります。一方、現行業務に沿った、アプリケーション開発の要件定義、概要設計工程と同期を取りながら、データベースの概念設計を進めていきます。

    【DB概論】データベース設計の重要性とデータ中心アプローチ
  • Google Japan Blog: 大規模日本語 n-gram データの公開

    突然ですが、穴埋めクイズです。下線部に入る単語はなんでしょう? グーグルで_____ おそらく、「検索」「調べる」「探す」といった単語を思いつくのではないでしょうか? 実際に、Webにあるドキュメントをくまなく調べ、「グーグルで」の後にくる単語を調べると、「検索」が1位であるとがわかります。 一般に、直前の(N-1)個の単語を見て、次の単語を予測するモデルをN-gram言語モデルといいます。さきほどは、「グーグル」 と 「で」の2単語から次を予想しているので、3-gram言語モデルの例となります。現時点の単語が、直前の(N-1)個のみに影響を受けるという仮説は、一見現実離れしているようですが、実際には非常に有効な場合も多く、かな漢字変換、OCRのエラー訂正、機械翻訳、音声認識などに広く用いられています。たとえば、音声認識の場合、ノイズ等で現時点の単語をシステムが聞き取れなくても、言語モデル

    Google Japan Blog: 大規模日本語 n-gram データの公開