Я думаю, что если ваше логическое поле таково, что вы будете ссылаться на него во многих случаях, имеет смысл иметь отдельную таблицу, например DeletedPages или SpecialPages, которая будет иметь много полей логического типа, например is_deleted
, is_hidden
, is_really_deleted
, requires_higher_user
и т. Д., И тогда вы будете брать объединения, чтобы получить их.
Как правило, размер этой таблицы будет меньше, и вы получите некоторое преимущество, если будете использовать объединения, особенно в том, что касается читабельности и удобства сопровождения кода. И для этого типа запроса:
select all pages where is_deleted = 1
Было бы быстрее, чтобы это было реализовано так:
select all pages where pages
inner join DeletedPages on page.id=deleted_pages.page_id
Я думаю, что я где-то читал о базах данных mysql, для которых нужно, чтобы поле имело как минимум кардинальное значение 3, чтобы индексирование работало в этом поле, но, пожалуйста, подтвердите это.