BONYEANをTINYINT(1)よりも使用する利点は何ですか?


16

MySQLマニュアルから、次のように書かれています:

ブール、ブール

これらのタイプはTINYINT(1)の同義語です。値ゼロは偽と見なされます。ゼロ以外の値は真と見なされます。

0デフォルト値としてBOOLEAN列を作成しました。次に、値をに更新します2。論理的には、私は、MySQLはどちらか受け入れることを期待する01、それはboolean型であるため。しかし、MySQLはエラーを発行したり、アップデートを実行することを妨げたりしませんでした。

BOOLEANがTINYINT(1)とまったく同じように機能する場合、TINYINT(1)を使用するかBOOLEANを使用するかに違いはありますか?

回答:


11

これら2つは本当に同義語なので、同じ意味で使用できます。それらの間に違いは見られません。

0と1のみを許可する場合でも、bitタイプを使用できます。


1
@QuestionOverflowは、1〜64 BITビットをコンパクトに保持するビットフィールドであることに注意してください。
デビッドハークネス14

2

他の人と作業している場合(または自分自身に思い出させたい場合)、データ型BOOLEANを使用して、データが1または0の値を取ることのみを意図していることを示唆できます。


0

確かに違いがあるように思えます。

私が使用しているテーブルには、列にインデックスを持つtinyintとして定義された列があります。次のクエリ「explain select * from table where column is true」を呼び出すと、テーブル内のすべての行を読み取ることを示します(「possible_keys」列と「ref」列は、「key」列がインデックス)。

クエリを「explain select * from table = column = 1」に変更すると、「possible keys」列と「ref」列に値が割り当てられ、「rows」がはるかに低い数値に設定され、インデックスが正しく作動します。

また、「true」を「false」に、1を0に置き換えて、同等の結果を得ました。

さらに一歩踏み込んで、tinyintからintに切り替えましたが、違いはありませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.