ビット列とブール列


12

ビットフィールドはデータの単なるバイナリ表現であり、わずかに「奇妙な」方法で照会する必要があることを考えると。

ブール値にビットフィールドを使用すると、実際に利点がありますか?私が見ることができることから、スペースが唯一の本当の利点であることを示唆しているようです。

回答:


14

個人的にはBOOLEAN、ブール値に使用します。ただし、MySQLでは[src]のBOOLEAN同義語であるという注意点に留意してTINYINT(1) ください

もちろん、これは、注意しないと0または1以外の値を持つことができることを意味します。これを回避するには、エイリアスTRUEを使用し、FALSEデータを挿入および更新するときに、それぞれ1と0にマップされるようにします。

5.0.3より前の完全であるため、これBITもの同義語でしたTINYINT(1)


1

正しく理解すれば、BOOLEANは常に列ごとに1バイトを使用しますが、BIT(n)は指定されたビット数を保持するために必要な数バイトを使用します。

したがって、BITはスペースをいくらか節約する可能性がありますが、SQLを使用してクエリを実行する必要がある場合は、BOOLEANを使用する方が簡単です。

アプリケーションが理解し、アプリケーションの単一のフィールドに格納されているフラグのセットがある場合、BIT(n)を使用することを検討します。ただし、SQLからクエリを実行する必要がある列がある場合は、BOOLEANを使用します。

例としては、フラグを使用してイベントを何週間実行するかを記録するアプリケーションがあります。1週間に1回、イベントが特定の週に実行される場合は1になります。データをデータベースでクエリしやすくする場合、2つのテーブル間で「正規化」されますが、データをデータベースに格納するだけでよい場合は、アプリケーションが使用する形式で保存するのが最適です。に。

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