TopicsPlaceHolder SectionTitlePlaceHolder TIME rest time current/total
よくMySQLはサブクエリが弱いと言われるが、これは本当だろうか?半分は本当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリのカラムを参照しているサブクエリのことである。そし
SQLのプログラミングは奥が深い。特にパフォーマンスの観点から、そう言えるだろう。 みなさんご承知の通り、同じ結果を出すプログラムでも、SQLの書き方次第で処理時間に何倍もの差が生じ得る。効率の悪いSQLを書いてしまう原因は、多くの場合、リレーショナルデータベースの内部動作やアプリケーションに関する理解不足である。両者をよく知った上で最適なSQLを書けるようになることは、システムエンジニアとしての重要なスキルの一つである。 特集『基礎から理解するデータベースのしくみ』では、リレーショナルデータベースの内部動作について、基本的な部分を分かりやすく解説している。SQLプログラミングに役立つことはもちろん、SQLチューニングやデータベース設計のための基礎知識としても不可欠だ。 イントロダクション ブラックボックスのままでいいの? Part 1:SQL文はどのように実行されるのか SQL実行までの
JavaScriptを使ってGPSデータを取得できるようになったiPhone OS 3.0。前回は、現在の位置情報を取得し、Googleマップに表示する方法を紹介しました。後編は、位置情報と日時をデータベースにどんどん記録していくプログラムを作ってみましょう。 Safariのデータベースを使う iPhoneに搭載されているSafariは、HTML5で追加される予定のAPI「Client-side database storage」を先行実装しており、ブラウザーが用意しているローカルデータベースにJavaScriptを使ってデータを保存できます。 iPhoneのSafariはデータベースエンジンとして「SQLite」を実装しています。SQLiteは、SQLのすべての命令には対応していませんが、簡単なWebアプリケーション用途であれば十分な機能を持つデータベースエンジンです。個々のテーブルは「
昨年末から「NoSQL」という言葉をネット上で見かけるようになった。字面だけを見ると「もはやSQLは必要ない」(No SQL)という意味にも取れる。だが実際には、「SQLだけに限らない」(=Not Only SQL)というのが正しいようだ。 NoSQLとは、SQL言語を利用しない非リレーショナルデータベース(RDB)を総称した表現である。代表的なものとして、数値や文字列といったデータ(value)を1個のキー(key)にひも付けて管理する「key-valueストア」がある。 key-valueストアで処理できるのは、keyで検索を実行してvalueの値を読み書きすることだけである。「販売単価が100円以上、1000円未満の製品情報だけを抽出」といった、SQLでは当たり前のように処理できる操作をNoSQLでは実行できない。RDBのようにデータの一貫性を厳密に保持しているわけでもない。 過去に
SQL文を実行する際のパフォーマンスに大きな影響を及ぼすものとして,もう一つ,インデックスがあります。インデックスについては,どう定義すべきかというデータベース設計上の問題と,インデックスを有効に使うためのSQL文をどう書くべきかというコーディング上の問題があります。 ここではテーブル設計上の問題を主に取り上げます。SQL文のコーディングについては囲み記事「SQL文を最速にする11のポイント」を参照してください。 インデックスは,テーブルの検索速度を向上させるためのものです。それぞれのSQL文に対して最適なインデックスを定義するのが理想的ですが,実際にはある程度限られたインデックスで,必要なパフォーマンス要件を満たすようにインデックスを定義する必要があります。加えて,どんなSQL文が実際に発行されるのかがあらかじめわかっていない場合は,適当な想定に基づいてインデックスを定義しておかなくては
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く