Eu estava olhando uma consulta de definição de tabela do WordPress e percebi algo estranho. Em primeiro lugar, a consulta era esta:
CREATE TABLE $wpdb->comments (
comment_ID bigint(20) unsigned NOT NULL auto_increment,
comment_post_ID bigint(20) unsigned NOT NULL default '0',
comment_author tinytext NOT NULL,
comment_author_email varchar(100) NOT NULL default '',
comment_author_url varchar(200) NOT NULL default '',
comment_author_IP varchar(100) NOT NULL default '',
comment_date datetime NOT NULL default '0000-00-00 00:00:00',
comment_date_gmt datetime NOT NULL default '0000-00-00 00:00:00',
comment_content text NOT NULL,
comment_karma int(11) NOT NULL default '0',
comment_approved varchar(20) NOT NULL default '1',
comment_agent varchar(255) NOT NULL default '',
comment_type varchar(20) NOT NULL default 'comment',
comment_parent bigint(20) unsigned NOT NULL default '0',
user_id bigint(20) unsigned NOT NULL default '0',
PRIMARY KEY (comment_ID),
KEY comment_post_ID (comment_post_ID),
KEY comment_approved_date_gmt (comment_approved,comment_date_gmt),
KEY comment_date_gmt (comment_date_gmt),
KEY comment_parent (comment_parent),
KEY comment_author_email (comment_author_email(10))
) $charset_collate;
Como você pode ver, comment_author_email
foi definido como varchar(100)
, mas sua chave foi definida com comprimento de 10 caracteres. Por que é que? É para economizar espaço, já que a maioria dos e-mails tem entre 10 e 15 caracteres?
Nesse caso, isso significa que - para um e-mail com 15 caracteres - os primeiros 10 caracteres serão indexados e os 5 caracteres restantes não serão indexados? É assim que funciona? (Não sou especialista em banco de dados, como você adivinhou).
Por fim, adicionarei uma tabela própria para um mecanismo que estou construindo, que precisará armazenar endereços de e-mail e números de telefone. Para os endereços de e-mail usarei uma definição semelhante. Quanto ao telefone, estou pensando em defini-lo como varchar(25) só por segurança, mas para seu índice, use novamente uma chave com 10 caracteres de comprimento. O que você acha desse planejamento?
Livrar-se de
comment_
; é a desordem que torna as coisas menos legíveis.A "prefixação" raramente é benéfica - tanto na velocidade quanto no espaço. Isto é, não diga
simplesmente diga
Seu exemplo 10 de 15: Sim, salva 5 caracteres. Mas prejudica a velocidade de todas as consultas que usam esse índice.