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.