Kolom Bit vs. Boolean

12

Mengingat bahwa bidang bit hanyalah representasi biner dari data dan perlu ditanyakan dengan cara yang sedikit "aneh".

Apakah ini benar-benar memberikan manfaat menggunakan bidang bit untuk nilai boolean? Dari apa yang saya lihat tampaknya menunjukkan bahwa ruang adalah satu-satunya manfaat nyata.

Markus D
sumber

Jawaban:

14

Secara pribadi, saya akan menggunakan BOOLEANuntuk nilai boolean. Namun perlu diingat bahwa peringatan di MySQL, BOOLEANhanyalah sinonim dari TINYINT(1) [src] .

Ini, tentu saja, berarti Anda dapat memiliki nilai selain 0 atau 1 jika Anda tidak berhati-hati. Untuk menghindari ini, Anda dapat menggunakan alias TRUEdan FALSEsaat memasukkan dan memperbarui data, karena peta tersebut masing-masing dipetakan ke 1 dan 0.

Demi melengkapi, sebelum 5.0.3, BITjuga merupakan sinonim dari TINYINT(1).

Derek Downey
sumber
1

Jika saya memahaminya dengan benar, BOOLEAN selalu menggunakan 1 byte per kolom tetapi BIT (n) akan menggunakan beberapa byte yang diperlukan untuk menampung jumlah bit yang diberikan.

Jadi BIT dapat menghemat ruang, tetapi BOOLEAN lebih mudah digunakan jika Anda perlu menanyakannya dengan SQL.

Jika saya memiliki serangkaian flag yang dipahami oleh aplikasi, dan disimpan dalam satu bidang dalam aplikasi, maka saya akan mencari untuk menggunakan BIT (n). Namun jika saya memiliki kolom yang perlu ditanyakan dari SQL, saya akan menggunakan BOOLEAN.

Contohnya adalah aplikasi yang menggunakan bendera untuk mencatat minggu apa acara harus berjalan, dengan sedikit per minggu, menjadi 1 jika acara berjalan pada minggu yang diberikan. Jika data akan dibuat mudah untuk di-query dalam database, itu akan "dinormalisasi" di dua tabel, tetapi jika data hanya perlu disimpan dalam database, maka yang terbaik disimpan dalam bentuk aplikasi yang menggunakannya. di.

Ian Ringrose
sumber