[firebase-br] Ordem dos INNER e LEFT - Desempenho.

Kurt Schneider kjundia em gmail.com
Ter Ago 3 14:38:34 -03 2010


Olá

Acredito que sua lógica  esteja equivocada Nivaldo, me corrija por favor.
Vamos colocar as coisas em Exemplo [TB_C = Cliente | TB_P = Pedidos],
com Integridade Referencial

TB_C                                              TB_P
------------
 -------------------------
PK CODCLI                                     PK CODPED
       +------------------------------------------   FK CODCLI

DADOS                                           DADOS
------------------                                     ------------------
CODCLI                                            CODPED CODCLI
1                                                              1         1
2                                                              2         2
3                                                              3         3
4                                                              4         4
5                                                              5         4
                                                                6         4
                                                                7         4
                                                                8         4
                                                                9         4
                                                              10         4
Consulta com INNER retorna 10 Registros para os dois Select Abaixo
SELECT TB_C.CODCLIE, TB_P.CODPED FROM TB_P INNER JOIN TB_C ON TB_C.CODCLIE =
TB_P.CODCLI;
SELECT TB_C.CODCLIE, TB_P.CODPED FROM TB_C INNER JOIN TB_P ON TB_P.CODCLI =
TB_C.CODCLIE;

Consulta com LEFT na TB_P retorna 10 Registros
SELECT TB_C.CODCLIE, TB_P.CODPED FROM TB_P LEFT JOIN TB_C ON TB_C.CODCLIE =
TB_P.CODCLI;

Consulta com LEFT na TB_C retorna 11 Registro (Cliente 5 - Null)
SELECT TB_C.CODCLIE, TB_P.CODPED FROM TB_C LEFT JOIN TB_P ON TB_P.CODCLI =
TB_C.CODCLIE;


Se pensar no meu primeiro exemplo, me intriga o fato de eu não ter mudado a
ordem das tabelas no LEFT, e sim
a posição dele em relação ao INNER / LEFT para LEFT / INNER. Na construção
de um PLAN, os INNER
pela natureza que representam, nao deveria responder de forma mais eficaz em
um SQL?

Pela lógica, cfme Carlos e da qual sigo o mesmo pensamento, os INNER
deveriam vir primeiro. É possível que
isso seja um comportamento erroneo do FB 1.5, visto que fiz testes com o
FB2.1 tanto INNER como LEFT primeiro
não tem diferença visível no desempenho?

Atenciosamente

-- 
PS: Troquei meu Número de Celular - 49 9148 4809

************************************************************************************
Kurt Schneider - [ Gerente de Projetos ]
ControlSoft - Assessoria e Desenvolvimento de Sistemas
Fones.: Chapecó/SC 49 3329 1878
            Sorriso/MT    66 3544 4364
            Celular          49 9148 4809 SC
                                66 9903 4958 MT
E-mail: kjundia em gmail.com / kurt em controlsoft.com.br
msn...: kjundia em hotmail.com / skype.: kjundia
"Quis custodiet ipsos custodes?" - Satirás - De Juvenal



Mais detalhes sobre a lista de discussão lista