Альтернативы логическим флагам в таблицах MySQL? - PullRequest
2 голосов
/ 19 августа 2010

Я использую различные логические флаги в своих таблицах, и, прочитав немного об оптимизации производительности, я натолкнулся на распространенный совет, чтобы избежать использования логических флагов.

Каковы эффективные альтернативы?Некоторые примеры будут высоко оценены.

Ответы [ 2 ]

4 голосов
/ 19 августа 2010

Я использую различные логические флаги в своих таблицах, и, прочитав немного об оптимизации производительности, я наткнулся на распространенный совет, чтобы избежать использования логических флагов.

В MySQL, BOOLEAN это просто псевдоним для TINYINT(1).

Это означает, что логические операции на самом деле являются целочисленными операциями.

Это, помимо прочего, означает, что в запросе, подобном следующему:

SELECT  *
FROM    mytable
WHERE   boolean_flag = 0

может использоваться индекс boolean_flag, если таковой имеется, в то время как в этом:

SELECT  *
FROM    mytable
WHERE   NOT boolean_flag

индекс не будет использоваться.

2 голосов
/ 19 августа 2010

если у вас много логических файлов, вы можете использовать bit

like

вместо четырех полей «true, false, false, true» для сохранениячисло «9» (1001 в двоичном виде)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...