MySQL Workbenchを使ってデータモデリングを学んでみよう
SQLエディタ
「データモデリング、敷居が高いなぁ」というむきにはSQLエディタを試してみることをおすすめします。
SQLエディタはWorkbenchのホーム画面から登録した接続(Local5614)をダブルクリックすることにより起動します(図8)。非常に多くの機能があるため、ここでは手軽に使えて便利な機能をご紹介します。
クエリの入力支援機能
クエリを入力していくと、その文脈にあった形でデータベースオブジェクト(表やビュー、それらを構成するカラム)や関数の候補を表示してくれます(図9)。これは長いデータベースオブジェクト名や関数を利用する際に便利です。またエディタの右のペインでは文脈にあわせてヘルプを(Context Help)表示してくれますので、対話的にゼロからクエリを作成する場合に細かな文法を参照しながら作業を行えますので便利です。
また右のペインではContext Help以外にSnippets(スニペット)を選択することができます。スニペットはクエリそのものやクエリの一部分を保存して再利用できるシンプルな仕組みです。よく利用するクエリのフレーズを記録して利用したり、複雑なクエリを生成する際、クエリの一部を一時保管するのにも利用できます。例えば筆者の場合は特定の範囲(下記の例だと2012年)の日付時刻をランダムに出すために以下のフレーズをよく使います。
SET @FROM = unix_timestamp('2012-01-01 00:00:00'); SET @TO = unix_timestamp('2013-01-01 00:00:00'); select from_unixtime(FLOOR(@FROM + RAND() * (@TO - @FROM)));
これをQuery Editorに入力し、Snippetsタブを選択した後、☆に+(Snippetsは☆でイメージしています)のアイコンを押すことにより、この内容のスニペットが作成できます。スニペットを利用する際は右クリックメニューで以下のいずれかを選びます(もしくはそれぞれ☆に→Iのアイコン、☆に↑のアイコンを押します)。
- Insert Snippet at Cursor: スニペットをカーソル位置に挿入
- Replace Editor Content with Snippet: エディタの内容をスニペットで置換
クエリの整形、EXPLAIN機能
他人が書いた複雑で長大なクエリは理解するのも一苦労です。また、ミドルウエアから自動生成されたクエリは独特の記法であまり人間が読んで理解できるようにはなっていないことがしばしばです。
このようなクエリを外部から読み込んだ場合には、クエリの整形機能を使ってみましょう。Query Editorにクエリを表示してから、ほうきのアイコンを押すと整形されます。
メニューからEdit-Format-Beautify Queryを選択することでも可能です。
クエリが効率よく実行されているかどうかは、オプティマイザがそのクエリに対してどのような実行計画を選択したか、を確認する必要があります。
クエリの実行計画を知るにはEXPLAIN句を利用するのですが、Queryエディタからは稲妻に虫眼鏡のアイコンを押すことにより、クエリにEXPLAIN句をつけた結果を容易に取得することができます。
メニューからQuery-Explain Current Statementを選択することでも可能です。
MySQL 5.5以前のバージョンに接続した場合はSELECT文しかEXPLAINの実行はできませんが、5.6以降のバージョンに接続した場合には、更新クエリ(INSERT/UPDATE/DELETE)でも実行計画の取得が可能です。
なおオプティマイザの動作や実行計画についての初歩的な知識を得たい方は、参考文献にあげた拙書の「5.4 プランとヒント」をご参照ください。
さて次回はWorkbench 6.0からは機能を充実させ別プロダクトになったMySQL Utilitiesについて便利なツールを説明したいと思います。
【参考文献】
- ミック『達人に学ぶDB設計徹底指南書』翔泳社(発行年:2012)
- 渡辺幸三『データモデリング入門』日本実業出版社(発行年:2001)
- 梅田弘之『グラス片手にデータベース設計 販売管理システム編』翔泳社(発行年:2003)
- 羽生章洋『楽々ERDレッスン』翔泳社(発行年:2006)
- 木村明治『プロになるためのデータベース技術入門 MySQL for Windows 困ったときに役立つ開発・運用ガイド』技術評論社(発行年:2012)