Usar chave primária como inteiro auto incremental pode influenciar na performance do sistema?  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
thiagocg
Virtual Machine Man
[Avatar]

Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline

Ola pessoal, estou em um projeto novo em uma empresa que entrei a pouco, e o analista de sistemas desta empresa esta modelando o sistema (fazendo d.e.r), será um sistema quer rodará apenas com servlets e jsp e usarei o hibernate para camada de persistencia.

Até ai td bem, o q me espantou foi q o analista esta modelando e criando algumas tabelas com o identificador como String (char no ORACLE 10g que será o bd q utilizaremos), ai conversando com ele, foi dito que esta escolha foi devido a performance em consultas.

Gostaria de saber a opnião de vcs a respeito disso, e se realmente terei um ganho de performance significativo que compense td o trabalho q terei para gerenciar as "pk" que serão digitadas pelos usuários da aplicação!

Aguardo a opnião de vcs!

Obrigado a todos!

________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
[Email] [MSN]
giovanni_stiwes
JavaGuru

Membro desde: 20/04/2006 09:00:42
Mensagens: 236
Offline

Sim, pricipalmente em Joins e consultas que a chave primaria é usada no where ou order.
[MSN]
Felagund
GUJ Master
[Avatar]

Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline

giovanni_stiwes wrote:Sim, pricipalmente em Joins e consultas que a chave primaria é usada no where ou order.


Na verdade oq ele quer saber se char é melhor que inteiro.

eu prefiro o conceito de Surrogate Keys.


att
Rafael Felix

Rolling With Code
Twitter
[WWW]
brunobuild
JavaGuru
[Avatar]

Membro desde: 07/01/2008 13:41:22
Mensagens: 232
Localização: São Paulo
Offline

Na verdade existem varias maneiras de melhorar a performance de um banco de dados, eu acredito que fazendo isso não tera um ganho significativo.
Eu já tive algumas experiências onde eu precisava ganhar performance, umas das soluções que eu adotei foi a seguinte.

Eu fazia a modelagem do banco de dados com primary key simples esquece chave "combosta", e depois eu tirava todas as chaves do banco de dados, pois se ele é incremental a chave nunca vai se repetir, nisso vc já ganha alguns segundos nas queries.
Agora respondendo sua pergunta acredito que utilizando inteiro a performance vai ser a mesma tendo em vista que quem vai controlar isso é o banco de dados e não a aplicação.
E o problema de deixar o usuário digitar a chave é um pouco antigo este conceito acredito que não seja uma boa prática.

Está é minha opinião se falei besteira por favor me perdoem

Bruno Rodrigues
[Email]
thiago.correa
GUJ Master
[Avatar]

Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline

Ele é analista ou DBA?!

---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
Thiago
[MSN]
thiagocg
Virtual Machine Man
[Avatar]

Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline

Analista

________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
[Email] [MSN]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team