2011-07-10 5 views
0

ストレージエンジンの目には、bit(8)tinyintの間に違いがありますか?bit(8)vs tinyint

またはbit(16)smallint

またはbit(24)mediumint

またはbit(32)int

私が知りたいのは、それらが同義語であり、エンジンが他と同じように扱うことです。

答えて

1

第1オフ:クエリを実行しようとするときに個々のエンジンがビットフィールドをどのように扱うかについて、私は内部的な考えを持っていません。これらの2つの列型を索引付けまたは問合せするほうが早いのが不思議です。

生貯蔵の観点から、これらはstorage requirements for numeric typesある:

  • TINYINT = 1バイト
  • SMALLINT = 2バイト
  • MEDIUMINT = 3バイト
  • INT、INTEGER = 4 バイト
  • BIGINT = 8バイト
  • FLOAT(p)= 4 0 if < = P < = 24、8バイト= 4バイト25 < = P < = 53 FLOAT
  • DOUBLE
    [PRECISION]、REAL = 8バイト
  • DECIMAL(M、D)、数字(M、もしD)=変動する。 議論
  • BIT(M)=約
    (M + 7)/ 8バイト

ストレージ・レコードごとに4つのバイトを必要とNDBCLUSTERストレージエンジンを使用している場合を除き、以下を参照。 (あなたがその4バイトの最小に圧縮されます複数のビットの種類を持っていない限り)

編集:this page on numeric types TINYINT(1)によると

とビットはメモリ用のMyISAMと5.0.5のバージョン5.0.3以前の代名詞でした、InnoDB、BDB、およびNDBCLUSTERです。これは彼らがもう存在しないことを意味する。

+0

私はすでにそれを知っています。 – teol

+0

あなたは何を求めていますか? – Tremmors

+0

エンジンは内部的にIDENTICALLYを扱うかどうかは、ストレージ/挿入/編集/削除/ etc /などを使っていますか?言い換えれば、他を使用してIDENTICALですか? – teol