Estive pesquisando lixões SQL de alguns CMSes famosos, incluindo Drupal 7, Wordpress (alguma versão muito antiga) e algum aplicativo personalizado baseado em Python.
Todos esses despejos continham dados com sinalizadores de seqüência de caracteres em vez de números inteiros. Por exemplo, o status de um posto foi representado como published
, closed
ou inherit
em vez de 1
, 2
ou 3
.
Tenho uma experiência bastante limitada no design de bancos de dados e nunca passei por SQLs simples, mas sempre fui ensinado que deveria usar sinalizadores numéricos / inteiros para dados como esse. É óbvio que tinyint
consome muito menos espaço em um banco de dados do que, por exemplo varchar(9)
.
Então o que estou perdendo? Isso não é um desperdício de armazenamento de dados e uma redundância de dados? A navegação, a pesquisa e a indexação não seriam um pouco mais rápidas se essas colunas usassem números inteiros em vez de strings?
char
s? Quão ineficiente!" está desatualizado em comparação com 2015.