sql >> Databáze >  >> RDS >> Mysql

enum nebo char(1) v MySQL

Ani. Obvykle byste použili tinyint s vyhledávací tabulkou

  • char(1) bude o něco pomalejší, protože porovnávání používá řazení

  • zmatení:Když se rozšíříte na více než A a P

  • použití písmene vás omezuje při přidávání dalších typů. Viz poslední bod.

  • každý systém, který jsem viděl, má více než jednoho klienta, např. reporting. A a P musí být v každém klientském kódu přeloženy na aktivní a pasivní

  • rozšiřitelnost:přidejte jeden další typ („S“ pro „Pozastaveno“), můžete jeden řádek do vyhledávací tabulky nebo změnit mnoho kódu a omezení. A váš klientský kód také

  • údržba:logika je na 3 místech:omezení databáze, kód databáze a kód klienta. Díky vyhledávání a cizímu klíči to může být na jednom místě

  • Enum není přenosné

Výhodou je použití jediného písmene nebo Enum

Poznámka:Existuje související otázka MySQL týkající se enumů DBA.SE . Doporučení je použít i tam vyhledávací tabulku.



  1. Použití Kubernetes k nasazení PostgreSQL

  2. PRO AKTUALIZACI v/s ZÁMEK V REŽIMU SDÍLENÍ:Povolit souběžným vláknům číst aktualizovanou hodnotu stavu uzamčeného řádku

  3. Jak TO_CHAR() funguje v MariaDB

  4. Jak získáte maximální možné datum v Oracle?