-
Zmiana zestawu wartości w ENUM wymaga
ALTER TABLE
co może spowodować restrukturyzację tabeli — niezwykle kosztowna operacja (restrukturyzacja tabeli nie nastąpi, jeśli po prostu dodasz jedną nową wartość na końcu definicji ENUM, ale jeśli ją usuniesz lub zmienisz kolejność, restrukturyzacji). Natomiast zmiana zestawu wartości w tabeli przeglądowej jest tak prosta, jak INSERT lub DELETE. -
Nie ma możliwości powiązania innych atrybutów z wartościami w ENUM, na przykład, które z nich są wycofywane, a które kwalifikują się do umieszczenia na liście rozwijanej w interfejsie użytkownika. Jednak tabela przeglądowa może zawierać dodatkowe kolumny dla takich atrybutów.
-
Bardzo trudno jest wykonać zapytanie ENUM, aby uzyskać listę odrębnych wartości, zasadniczo wymaga to zapytania o definicję typu danych z
INFORMATION_SCHEMA
i analizowanie listy ze zwróconego obiektu BLOB. Możesz spróbowaćSELECT DISTINCT status
z twojej tabeli, ale pobiera tylko aktualnie używane wartości statusu, które mogą nie być wszystkimi wartościami w ENUM. Jeśli jednak przechowujesz wartości w tabeli przeglądowej, łatwo jest wykonywać zapytania, sortować itp.
Nie jestem wielkim fanem ENUM, jak można powiedzieć. :-)
To samo dotyczy ograniczeń CHECK, które po prostu porównują kolumnę ze stałym zestawem wartości. Chociaż MySQL i tak nie obsługuje ograniczeń CHECK.
Aktualizacja:MySQL 8.0.16 implementuje teraz SPRAWDŹ ograniczenia .