[firebase-br] Dúvida sobre indices

Urias Gadelha uriasgadelha em redesoft.com.br
Ter Maio 5 16:43:36 -03 2020


Muito obrigado... Ajudou bastante!

Em ter., 5 de mai. de 2020 às 16:29, Mário Reis <mariodosreyx em gmail.com>
escreveu:

> Desde logo como disse o Cantu V. não tem duas chaves primárias que isso não
> existe para a mesma tabela. O que  V. tem uma única chave primaria composta
> por dois campos, meu caro
> Assente que  duas chaves primária no mesmo ficheiro não existe V. tem duas
> alternativas
> 1.º  tem que analisar se precisa mesmo de uma chave primaria composta por
> esses 2 campos
> Porque o mais certo é não necessitar.
> Então V. usa no PK a Chave1 e a Chave2 num indice Único.
> No entanto, se necessita mesmo de chaves compostas é a mesma coisa.
> Na PK=Chave1+Chave2 Unique Key=Chave2+Chave1, e ambos com actualização
> dinâmica. Assim qaundo fizer o Query o Sql por si mesmo sabe o índice que
> deve usar e usa o que tiver a ordenação pela parte da chave mais à esquerda
> (LeftMost key part creio que era assim que a designa o Prof E.F Codd da IBM
> lá atrás no anos 70) .
> Assim:
> ALTER TABLE <TABELA> ADD CONSTRAINT PK_CHAVE1 PRIMARY KEY (CHAVE1);
> ADD CONSTRAINT UQ_TABELA UNIQUE (CHAVE2);
> OU, em alternativa:
> ALTER TABLE <TABELA> ADD CONSTRAINT PK_CHAVE1 PRIMARY KEY (CHAVE1,CHAVE2);
> ALTER TABLE <TABELA> ADD CONSTRAINT UQ_TABELA UNIQUE ( CHAVE2,CHAVE1 );
> Não sei se consegui ajudar, seria mais fácil se soubesse qual q sua ideia,
> exacatmente. De qualquer forma estude as diferenças entre PK e UQ.
> Basicamente a PK não permite campos nulos enquanto a UQ permite o que
> poderá ter desvantagens e vantagens.se estou bem lembrado e, Foreing keys
> não se deve(ou não se pode) usar UQ etc..
> Assim não tem porque não conseguir a mesma performance
>
> Com os meus melhores cumprimentos
> Mário Agostinho Reis
> 919262146
>
> Esta mensagem contém informação de natureza confidencial e é
> exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
> receber este email agradecemos que não o copie nem o reenvie e que nos
> notifique do ocorrido através do email de resposta.
> [image: cloudHQ]
> <
> https://chrome.google.com/webstore/detail/free-email-tracker/nknojfclnachdkpdkjbbhbkgpnladhnj
> >
> Powered
> by
> cloudHQ
> <
> https://chrome.google.com/webstore/detail/free-email-tracker/nknojfclnachdkpdkjbbhbkgpnladhnj
> >
>
>
> Urias Gadelha <uriasgadelha em redesoft.com.br> escreveu no dia segunda,
> 4/05/2020 à(s) 19:40:
>
> > Pessoal, me tira uma dúvida por favor
> >
> > Tenho a seguinite tabela.
> >
> > CREATE TABLE TABELA (
> >        CHAVE1 Numeric(10,0) NOT NULL,
> >        CHAVE2 Numeric(10,0) NOT NULL,
> >        CAMPO1 TIMESTAMP,
> >        CAMPO2 Varchar(1),
> >        CAMPO3 Numeric(10,0),
> >        CAMPO4 Numeric(10,0),
> >        CAMPO5 Numeric(10,0),
> >        CONSTRAINT TABELA PRIMARY KEY (CHAVE1,CHAVE2)
> > );
> >
> > Nela, criei a PK usando os campos CHAVE1 e CHAVE2.
> >
> > Se eu executo:
> >
> > select * from TABELA
> > where TABELA.CHAVE1 = 30405
> >
> > Tenho o plano:
> >
> > PLAN (TABELA INDEX (PK_TABELA))
> >
> > Porém, se e eu executar o select pela outra chave primária:
> >
> > select * from TABELA
> > where TABELA.CHAVE2 = 30405
> >
> > Tenho o plano:
> >
> > PLAN (TABELA NATURAL)
> >
> > Alguém sabe me dizer o porque? se estou usando as duas chaves primárias,
> > uma em cada select...
> >
> > Desde já, agradeço a ajuda!
> >
> > --
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas:
> > http://www.firebase.com.br/pesquisa_lista.html
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>


--


Mais detalhes sobre a lista de discussão lista