2007/2/24 土曜日

MySQLでJOINで結合してインデックスを使わせる

このエントリをはてなブックマークに追加MySQLJOINхゃ潟鴻篏帥のはてなブックマーク被リンク数
Filed under: mysql — akky @ 0:00:00

はてなで質問したら

http://q.hatena.ne.jp/1172231903

JOINを使えば良いと教えてくれる。

そういえば、JOINを使って書くのは初めてだな。昔Access97を使っていた頃にウィザードが生成した

SQL文にJOINが使われていて当時は構文を理解できずずっと毛嫌いしていたものですよ。

示された書き換えの構文を試してみると・・・

なんという事でしょう。意図した通りインデックスがつかられているではありませんか〜。これまで、0.4秒だったのが0.1秒未満になったのです。

処理全体では1/14の時間で終るようになり劇的な改善。結合としてJOINを使うとよろしく判断してくれるのか。

2007/2/23 金曜日

mysqlで動いているSQLのチューニング

このエントリをはてなブックマークに追加mysqlуSQLャ若潟阿里呂討淵屮奪マーク被リンク数
Filed under: mysql — akky @ 0:00:00

社内で別の人が担当しているweb系のアプリで、サーバでの処理が遅くブラウザがタイムアウトする場合がある。オンラインバッチな機能なので排他制御が足りなく、ブラウザを一度終了させると処理中にも関わらず再実行できてしまう。

今は排他制御の強化とオンラインバッチをコンカレント処理にして対応する予定。でも、topで見ていると処理中はmysqldにCPUが張り付きっぱなし。まずは、これが先なんじゃないか。とも思う。

テストをするにもだらだらと待つので退屈。なのでSQLの性能改善にチャレンジ。Oracleではそれなりに場数を踏んでいるものの、MySQLは初めて。アプリの中は理解していないので、MySQLから遅いSQL文を探す方法を探す事から開始。

とっかかりとしてはMySQLが遅いSQL文を報告してくれるのでそれを解析することから。

http://dev.mysql.com/doc/refman/4.1/ja/slow-query-log.html

次のページ »