4月中旬ころになりますが、新著が出ます。SQLのパフォーマンスを主題にした本で、実行計画を読むことで、なぜこのSQLは遅いのか、あるいは速いのかをデータベースの内部動作まで把握して理解しよう、という趣旨です。 リレーショナルデータベースというのは、SQLという自然言語を模したインタフェースによって、低次のレイヤーを隠蔽する意図で作られたミドルウェアなので、本当は実行計画などという手続レベルの世界をユーザが覗き見るのは、本末転倒なところもあります。ただそうはいっても、現実にSQLが遅かったら原因を解析せざるをえないわけだし、大体本当にブラックボックスにしたいなら、なんでどのDBMSも実行計画を見られる手段なんか用意してるんでしょうね不思議ですね、という理想と現実の狭間で悩むエンジニアの方々に少しでもベターな解に辿りつけるアプローチを提示できれば、と考えております。 以下まえがきと章立てです。
こっちに移動 qiita.com
先日参加したRuby/Rails勉強会@関西 60thの「Ruby初級者向けレッスン」でこんな問題が出題されていたので紹介します。 問題 文字列中に含まれる単語の個数を単語ごとにカウントして、ハッシュとして表現してください。 実行例 入力: "no ruby no life" 出力: {"no" => 2, "ruby" => 1, "life" => 1} 自分なりの実装方法を考えてみよう Rubyに慣れた人なら、おそらくかなり簡単な部類に入るプログラミング問題だと思います。 しかし、こんな簡単な問題でも意外と実装方法は人によって異なるものです。 実際、僕が関わっている西脇.rb & 東灘.rbのコミュニティで出題したときも、解答例は人それぞれ異なっていました。 各人の知識やこだわりの違いがコードに現れてくるので、コードを見るだけでも面白いですし、お互い勉強にもなります。 あなたも解答例
Redmineチケットのテーブルissuesテーブルにlft, rgtというカラムがVer1.0からあって、何に使うのか分かっていなかったが、下記の記事を読んでようやく理解した。 ラフなメモ書き。 【元ネタ】 【Redmine】issuesテーブルのlft・rgtって? | Roppi.net SQLアタマアカデミー:第5回 SQLで木構造を扱う~入れ子集合モデル (1)入れ子集合モデルとは何か |gihyo.jp … 技術評論社 SQLアタマアカデミー:第5回 SQLで木構造を扱う~入れ子集合モデル (2)入れ子集合モデルにおける検索 |gihyo.jp … 技術評論社 SQLアタマアカデミー:第5回 SQLで木構造を扱う~入れ子集合モデル (3)入れ子集合モデルにおける更新 |gihyo.jp … 技術評論社 SQLアタマアカデミー:第6回 SQLで木構造を扱う~入れ子区間モデル (1
ここはとある街の総合病院。 ここには通常の診療科のほかに、一風変わった診療科が存在する。 何軒もの病院をたらいまわしにされた、手の施しようのないSQLや、今すぐに改善が必要なSQLが担ぎ込まれる救命室である。 それがSQL緊急救命室、略してSER(SQL Emergency Room)。 そう、ここは国内でも唯一のプログラミング専門外来である。 ロバート救命室部長。腕の立つエンジニアだが、口が悪く性格はもっと悪い四十オヤジ。 SQLを学ぶ上で最も高いハードルとなるのが、順序と手続きではなく、集合と論理の観点から考えることだ。 ―J.Celko『Joe Celko's SQL Programming Style』 (Morgan Kaufmann、2005年)p.184 ループによる表現 (PM3:00 手術室。先ほどかつぎ込まれたばかりの患者を前にして、何やら揉めている) ワイリー、
以下の文章は、Martin Fowler による Domain Logic and SQL の日本語訳である。 データベース指向ソフトウェア開発者とメモリ上(in-memory)アプリケーションソフトウェア開発者との間のギャップは、ここ数十年、徐々に広がってきている。このギャップが原因で、データベースの機能(SQLやストアドプロシージャ)をどのように扱えばよいのかという議論が数多く巻き起こっている。ここでは、ビジネスロジックを SQL に置くべきか、それともメモリ上のコードに置くべきかといった問題について、主にパフォーマンスと更新性の観点から考察を行う。考察には簡単な例を使うが、SQL クエリはしっかりとしたもの(rich SQL queries)を用いるので悪しからず。 エンタープライズアプリケーション(訳注:以下、EA)構築に関する本(私の近著『P of EAA』など)を読むと、ロジッ
SQLの文字列を組み合わせて作成をし、動的に発行するプログラムをVBやC#などアプリケーションで作成したことがあると思う。 TSQLにおいてこのような文字列で動的に変化するSQLを実行するためのものとしてsp_executesql という組み込みストアドが存在する。 ◇sp_executesql の構文(SQL Server2005 Helpより引用) sp_executesql [ @stmt = ] stmt [ {, [@params=] N'@parameter_name data_type [ [ OUT [ PUT ][,...n]' } {, [ @param1 = ] 'value1' [ ,...n ] } ] 1. 単純なSELECT の例 ※M_郵便番号テーブルの郵便番号の数を取得する例 @InnerSQL にSELECT文を埋め込み、実行する DECLARE @In
From: zen kishimoto <zen kishimoto <zen@xxxxxxxxxx>> Date: Sat, 03 Sep 2005 09:24:15 -0700 Subject: [mysql 12071] 階層化されたデータをMySQLで扱う (Managing Hierarchical Data in MySQL) http://dev.mysql.com/tech-resources/articles/hierarchical-data.html (図はこのサイトを参照のこと) Mike Hillyer著 初めに 多くのユーザーは一回くらいはSQLデータベース内で、階層化したデータを 扱ったことがあると思います。そのときはリレーショナル データベースは階層化したデータ用に開発されなかったと考えたと思います。 リレーショナルデータベースのテーブルは階層化されておらず
2007年01月19日 俺的コーディングルール SQL編 プロジェクトのコーディングルールがこうでなければいけないとか、他人に強制するわけではないが、自分自身で一貫性の無いコードを書くのは気持ち悪いので、オレオレルールを決めてたりする。大抵は デ・ファクト的なルールに沿う形で書くことが多いのだが、SQL や PL/SQL に関してはなかなかデファクトと呼べるものがないので(あるのか?)、メモ的に書きとめておく。 原則キーワード小文字オブジェクト名大文字カンマは後ろインデントは半角スペースで 2一つの SQL 文でキーワード毎にインデントしない(副問合せ除く) まず、1.2. に付いてなのだが、昔は「キーワード=大文字」という意味不明な先入観で大文字で書いていた。ただ、それだと PL/SQL のキーワードも大文字、オブジェクト名も大文字で結局ほとんど大文字になってしまうのと、Shift 押す
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く