Я использую различные логические флаги в своих таблицах, и, прочитав немного об оптимизации производительности, я наткнулся на распространенный совет, чтобы избежать использования логических флагов.
В MySQL
, BOOLEAN
это просто псевдоним для TINYINT(1)
.
Это означает, что логические операции на самом деле являются целочисленными операциями.
Это, помимо прочего, означает, что в запросе, подобном следующему:
SELECT *
FROM mytable
WHERE boolean_flag = 0
может использоваться индекс boolean_flag
, если таковой имеется, в то время как в этом:
SELECT *
FROM mytable
WHERE NOT boolean_flag
индекс не будет использоваться.