2006年07月24日

【MySQL】MySQL5.0で開発中

今、機会に恵まれてPHP5+MySQL5.0で開発させてもらってます。
どこぞのレンタルサーバーはMySQL4.0なのでサブクエリ使えなくてめんどくさかったですがサブクエリ使えるのでクエリ考えるのが楽ですね。

もう少しMySQL5.0での新機能を堪能すれば良いのでしょうが、インターネットがつながらない環境で開発しているので知識以上の事はなかなかできません。

そんな中で経験した事と分かった事から少しメモしときます。


1.インデックス
そもそもデータベースまわりの開発経験が無いと言って良いキャリアなのでインデックスを生成するなんて能動的にやったのは始めてでした。
今のところノートブックの中に環境を作って開発しているのですが、PentiumM1.0G級のノートブックで10万件レコードのものをインデックス無しで扱うのは無謀でした。
いやー、気が付いてなかっただけなんですけどね(汗

SELECTしてみるとやたらと遅いので散々悩みましたよ。
よ〜く考えて見るとプライマリキーも含まれないようなクエリだったのでORDER BY句が付くだけで遅くなったんです。
数分放置しても結果が得られないくらいです。
そこで複数カラムを指定してインデックスを作ってあげました。
そしたらたちまち改善され、数秒で応答されるようになりました。

13万件と千件のテーブルを内部結合するようなクエリを発行する場合でこうでしたので、クエリを発行する前にレコードのユニークさを特定する手がかりがクエリに含まれているか確認しましょうね。


2.集合差問い合わせ
集合同士の引き算はまだ実装されていないようです。
「minus」を使って
select * from tbl where title like 'a%'
minus
select * from tbl where code = '1000'
;

とやるとcodeが1000のレコードだけ削除した結果が得られるというやつです。
MySQLのドキュメントには近い将来で実装するとは書いてあったので実装される日を待ちますか。
ていうか、意外と使いたくなるので早く実装されて欲しいな。

以上がメモです。


この他にレプリケーションがどうのとか英語のマニュアルに書いてあったので試したいのですが・・・そこまで行くかは微妙です。
でもレプリケーションはやっときたいなぁ。
posted by ケイ at 23:41| Comment(0) | TrackBack(0) | プログラム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/21344279
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。