Ich denke , wenn Ihr boolean Feld so ist , dass man in vielen Fällen zu ihnen würde mit Bezug, wäre es sinnvoll , eine separate Tabelle zu haben, beispielsweise DeletedPages oder Special, die viele boolean Typ Felder haben, wie is_deleted
, is_hidden
, is_really_deleted
, requires_higher_user
usw, und dann würden Sie Joins nehmen, um sie zu bekommen.
In der Regel ist die Größe dieser Tabelle kleiner, und Sie erhalten einige Vorteile, wenn Sie Verknüpfungen verwenden, insbesondere was die Lesbarkeit und Wartbarkeit von Code betrifft. Und für diese Art von Abfrage:
select all pages where is_deleted = 1
Es wäre schneller, wenn es so implementiert würde:
select all pages where pages
inner join DeletedPages on page.id=deleted_pages.page_id
Ich glaube, ich habe irgendwo über MySQL-Datenbanken gelesen, dass Sie ein Feld benötigen, das mindestens eine Kardinalität von 3 hat, damit die Indizierung für dieses Feld funktioniert, aber bitte bestätigen Sie dies.