mSQL
との比較この節は、MySQL 開発者によって書かれていますので、そのつもりで 読んで下さい。しかし我々が知っている事実上の間違いはありません。
全てのサポートされた制限、関数、型のリストについては、 crash-me web page.
mSQL
は、select 中のテーブルの順番を変更した場合、patalogically
に遅くなります。ベンチマークスイートでは MySQL よりも 15000 倍
も遅くなりました。
スレッド生成オーバーヘッドなし, 小さなパーサ, 少ない機能, そして単純なセ
キュリティという理由で、mSQL
は次の点で速いです:
CREATE TABLE
と DROP TABLE
。
SELECT
。(テーブルスキャンがとても簡単)
mSQL
や多くの他の SQL 実装よりとて
も速いです:
mSQL
では、全ての他の接続は、最初のもの - クエリが長いか短いかに
関わらず - が実行され、終わるまで待つ必要があります。その後次の接続が与
えられ、他の全ては再び待ちます。
ORDER BY
と GROUP BY
。
DISTINCT
。
TEXT
または BLOB
項目の使用。
GROUP BY
& HAVING
MySQL は HAVING
を伴う完全な GROUP BY
や、次の関
数 count()
, avg()
, min()
, max()
,
sum()
そして std()
をサポートします。min()
と
max()
は文字列の引数も取れます。count(*)
は、クエリ内がこ
れだけの場合にとても速く返されるように最適化されます。mSQL
は
GROUP BY
を全くサポートしません。
INSERT
& UPDATE
with calculations.
MySQL は INSERT
または UPDATE
で計算を行えます。
UPDATE SET x=x*10+y WHERE x<20;
SELECT
with functions
MySQL の関数はここに一覧するには多すぎます。 「SELECT
と WHERE
節で使用する関数」節参照 。
mSQL2
は4つの型(char,text,int,real)しかないので、小さなテーブルを
得るのは難しいです。
mSQL
安定性の経験がありません。そのため、我々はこれにつ
いては何も言えません。
mSQL
よりも柔軟なライセンスを持っています。そして mSQL
よ
りもより安いです。少なくとも、あなたが使用を選択した製品全てに、ライセン
スまたは email サポートへの支払いを考慮することを覚えていて下さい。
MySQL と共に製品を売る場合、もちろんこのライセンスの獲得が要求
されます。
mSQL
と同じ perl インタフェースと、いくつかの追
加機能を持ちます。
mSQL
がそれを持っていることを知っていますが、我々の経験は
それを比較するのには少なすぎます。
mSQL
には実装されていませんので、it has a lot of chatching up to
do. この上でいくつかの見通しを得るために、去年の mSQL
HISTORY ファ
イルを見て、News 節と比較できます。 「MySQL change history」節参照 。速く開発された多くのもの
が、かなり明白になります。
mSQL
と MySQL は多くの興味深いサードパーティツールを持っ
ています。上位への移行 (mSQL
-> MySQL) はとても簡単です。
MySQL は、ほとんど全ての興味深い mSQL
アプリケーションを
持っています。
MySQL は、簡単な msql2mysql プログラムで得られます。これは良く使われる関
数の異なるスペルを修正するプログラムです。クライアントプログラムの
mSQL
から MySQL への変換は通常、数分使用するだけです。
mSQL
ツールについては?
我々の経験によると、mSQL
C API を使用するツールを MySQL
C API に変換するのには、少ない時間が必要なだけです。
手続き:
MySQL と mSQL
間の C API の違い。
mSQL
は
int
を使用します)。
mSQL
はテキストエラーだけを返します。
mSQL
からの違いは?両方サポートすることができない(少なくとも不可能な)十分な違いがあります。
MySQL と mSQL
の間の大きい違いは次です:
mSQL
2.0 間の SQL 構文の違いは?CREATE TABLE
MySQL
UNSIGNED
オプション。
ZEROFILL
オプション。
PRIMARY KEY
も含み全ての整数項目への AUTO_INCREMENT
オプショ
ン。 「最後に挿入された行のユニーク ID をどのように得られるか?」節参照 。
DEFAULT
値。
ENUM
型。
SET
型。
BIGINT
型。
mSQL2
mSQL 型 | 対応する MySQL 型 |
char(len) | char(len) |
text(len) | text(len)。len は最大長。LIKE も働く。
|
int | int。多くのオプションがある! |
real | real または float。4 と 8 バイトの両方のバージョンが有効。 |
uint | Unsigned integer。 |
date | date。mSQL 自身の形式の代わりに ANSI SQL 形式を使用。
|
time | time |
money | decimal(12,2)。少数点以下2桁の固定小数点値。 |
MySQL
CREATE TABLE
で与えられる必要があります。イ
ンデックスはテーブルの再生成なしに削除することはできません。 「ALTER TABLE 構文」節参照 。
mSQL
CREATE INDEX
節によって生成されます。インデッ
クスはDROP INDEX
で削除できます。
MySQL
AUTO_INCREMENT
を項目型記述子として使用します。 「最後に挿入された行のユニーク ID をどのように得られるか?」節参照
mSQL
SEQUENCE
を作成し、__seq
項目を select します。
MySQL
PRIMARY KEY
を追加します。
mSQL
_rowid
項目を使用します。_rowid
が多くの要素に依存して変更
されることを観察します。
MySQL
TIMESTAMP
項目をテーブルに追加します。UPDATE
や
INSERT
ステートメントで項目値を与えない場合、または NULL 値を与え
た場合、この項目は自動的に現在の時刻に更新されます。
mSQL
_timestamp
項目を使用します。
=NULL
は IS NULL
に変更しなければなりません。
BINARY
属性で宣言すべきで
す。
MySQL
LIKE
は使用される項目によってケース非依存またはケース依存です。可
能ならば、like 引数がワイルドカードで始まっていなければ、MySQL
はインデックスを使用します。
mSQL
CLIKE
を使用します。
MySQL
CHAR
と VARCHAR
項目の全ての最後の空白は取り除かれます。こ
の振る舞いが好ましくない場合は、現在は TEXT
項目を使用してください。
mSQL
WHERE
ステートメントの違いは何?
MySQL
mSQL
の振る舞いを得るには、各個を使用し
てください: select * from table where a=1 and b=2 or a=3 and b=4
-> select * from table where (a=1 and (b=2 or (a=3 and (b=4))))
。
mSQL
MySQL
mSQL
For a list of all supported limits, functions and types see the crash-me web page.
PostgreSQL はさらに進んだ機能をいくつか持っています。ユーザ定義型、トリ ガ、ルール、トランザクションのような。しかし ANSI SQL と ODBC の標準型と 機能の多くが欠けています。サポート/未サポートの型/関数の完全な一覧は crash-me web page を見てください。
通常、PostgreSQL は MySQL よりとても遅いです。 「MySQL benchmark suite」節参照 。
Go to the first, previous, next, last section, table of contents.