Usuário com melhor resposta
Armazenando código de barras

Pergunta
-
Colegas,
Gostaria de saber se existe algum tipo de atributo especial que devo usar na hora de armazenar o código de barras dos produtos de minha aplicação.
Só para não haver dúvidas, estou me referindo ao código com 13 posições como 7898877787895, observem que ele é grande demais para ser do tipo integer e pequeno demais para ser do tipo bigint.
No SQL 2008 foram criados novos tipos para suprir as novas realidades como latitude e longitude, gostaria de saber de vocês que tipo de atributo usam para armazenar o codigo de barras com 13 posições, estou querendo obter a melhor performace na hora de fazer pesquisa.
Obrigado
Bene
Benedito Santana - São Paulo/SP - Sua pergunta foi respondida ? Marque-a !
Respostas
-
Boa Noite,
Puxa, estou devendo esse assunto a mais de um ano no BLOG (rs).
Se o código só pode expressar valores inteiros eu sugiro armazená-lo como BIGINT mesmo. Gastar 8 bytes é melhor do que gastar 13bytes se fosse representá-lo como texto. Acho que o BIGINT é a melhor opção para esse caso.
Os novos tipos do SQL Server 2008 são interessantes, mas nenhum se adequada especificamente a esse caso.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comMitos do SQL Server – A ordem das tabelas influencia no desempenho de uma instrução SELECT ?
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!643.entry
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar segunda-feira, 20 de julho de 2009 04:06
- Marcado como Resposta Fernanda Simões terça-feira, 4 de agosto de 2009 19:07
-
Benê,
Tenho várias aplicações aqui na empresa que utilizam códigos de barras, dentre eles o EAN13, EAN128 e DUN14.
No caso do código EAN13 e DUN14 estou utilizando o datatype char(13) e char(14) devido a estrutura das aplicações.
Agora em relação ao EAN128 estou trabalhando com um char(128).
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA- Marcado como Resposta Fernanda Simões terça-feira, 4 de agosto de 2009 19:07
Todas as Respostas
-
Boa Noite,
Puxa, estou devendo esse assunto a mais de um ano no BLOG (rs).
Se o código só pode expressar valores inteiros eu sugiro armazená-lo como BIGINT mesmo. Gastar 8 bytes é melhor do que gastar 13bytes se fosse representá-lo como texto. Acho que o BIGINT é a melhor opção para esse caso.
Os novos tipos do SQL Server 2008 são interessantes, mas nenhum se adequada especificamente a esse caso.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comMitos do SQL Server – A ordem das tabelas influencia no desempenho de uma instrução SELECT ?
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!643.entry
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar segunda-feira, 20 de julho de 2009 04:06
- Marcado como Resposta Fernanda Simões terça-feira, 4 de agosto de 2009 19:07
-
Benê,
Tenho várias aplicações aqui na empresa que utilizam códigos de barras, dentre eles o EAN13, EAN128 e DUN14.
No caso do código EAN13 e DUN14 estou utilizando o datatype char(13) e char(14) devido a estrutura das aplicações.
Agora em relação ao EAN128 estou trabalhando com um char(128).
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA- Marcado como Resposta Fernanda Simões terça-feira, 4 de agosto de 2009 19:07
-
Caros Colegas ( Gustavo e Junior )
Desejo otimizar consultas por exemplo simplesmente saber se um código já existe na tabela, eu aprendi que a consulta a valores númericos são mais rápidas do que consultas do tipos varchar, a questão é se isto ainda é verdade?
A afirmação está certa, teoricamente EAN13 é só números e se vai ocupar 8bytes no lugar de 13bytes, é realmente uma boa opção. ( acho está informação importante )
Hoje eu armazeno em varchar(13).
Blz, Obrigado aos dois, Gustavo, quando postar este assunto em seu blog, de um aviso a cominudade.
Obrigado
Bene
Benedito Santana - São Paulo/SP - Sua pergunta foi respondida ? Marque-a ! -
Olá Benê,
Acho que consultas numéricas sejam mais rápidas que consultas textuais porque normalmente dados numéricos ocupam menos espaço. Se uma consulta textual ocupar menos espaço, essa também poderá ser mais rápida que uma consulta numérica. Nunca encontrei nada que afirmasse que consultas numéricas são mais rápidas e "pronto".
Quando terminar (tô devendo tem um tempão) eu aviso sim...
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comMitos do SQL Server – A ordem das tabelas influencia no desempenho de uma instrução SELECT ?
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!643.entry
Classifique as respostas. O seu feedback é imprescindível -
Benê,
Você conseguiu solucionar o seu problema?
Caso afirmativo poste a solução para que outras pessoas se beneficiem.Att,
Fernanda
“Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.