[PHP-users 13995] Re: 社内システム構築のためのDB環境について

Kenji ono php-users@php.gr.jp
Sat, 15 Mar 2003 12:04:14 +0900


小野と言います。

> 経験的なことで断定は出来ないのですが、誤ってキーを張り忘れてjoin
> してしまったら、信じられない位い遅くて壊れてもいいからとKillした
> ことがあります。
> やはりMySQLには遅くなる頻度が高いという感じをもたれている方は他
> にもいらっしゃるんですね。

ここのメーリングリストに投稿することではないのかもせれませんが、
PostgreSQLがWindowsでLinuxと同等の機能のままオープンソースとして
使えればMySQLは使わない、と嘆いている人がまわりに沢山います。
ただ、僕も柴田さんがおっしゃるように設計次第だと思ってます。
データベース側の良いところを利用した設計にしてあげれば結構
早いかな。
ただ、たんに1万件くらいのデータをIndexのきいた列をWhere句に
入れて検索するくらいなら、どっちもかわらなかったです。
一番、MySQLとPostgreSQLの利用に分かれるのは表結合ではないで
しょうか。
Joinでかわせるところもあるのでしょうが。

/* 職制管理表:syokusei_cdでユニーク */
create table  t1 (
  syokusei_cd   int , /* 職制コード */
  syokusei_name char(20) , /* 職制名 */
  CONSTRAINT t1_pk1 PRIMARY KEY ( syokusei_cd )
) ;
/* 従業員管理表:syain_idでユニーク */
create table  t2 (
  syain_id int , /* 従業員コード */
  syain_name char(20) , /* 従業員名 */
  syokusei_cd   int , /* 職制コード */
  CONSTRAINT t1_pk1 PRIMARY KEY ( syain_id )
) ;
良くありがちなのが、上記のような管理表があって、職制はA,B,C
があります。
それぞれの職制A,B,C配下には従業員がぶら下がっています。
職制配下の従業員が多い順に職制を並べるとしたら、皆さんはどう
SQLを作成します?
あえてSQLは記述しませんが、わりと表結合で考える方が多いのでは
ないでしょうか。
だとすると、MySQLは利用できません。

うちの部署では、上記のような観点からUNIX系ならPostgreSQL、
Windows系ならSQLServerを利用しています。
工夫すればMySQLでもいけるんですけどね。

---
By minaton