Welcome to Sign in | Help

Re: mutare conditii de where in join; performant sau nu ?

  •  09-29-2011, 1:02 PM

    Re: mutare conditii de where in join; performant sau nu ?

    Salut,

    Mersi pentru recomandare si explicarea ordinii.

    Nelamurirea mea era legata de plasarea conditiilor.
    Voi cauta in carte mai multe detalii dar ca si exermplu pragmatic ar fi vorba de :

    select
    *
    from Document
    inner join DocumentDetail on Document.DocumentId = DocumentDetail.DocumentId
    inner join InvoiceDetail on DocumentDetail.DocumentDetailId = InvoiceDetail.InvoiceDetailId
    where
    Document.DocumentId = 1
    option(force order) -- pentru a nu fi reordonat querry-ul

    Aici s-ar face joinul dintre toate DocumentDetail cu InvoiceDetail ( pe conditia de on) si daca ar fi 100.000 atunci ar fi match-uite toate, dupa care se filtreaza cu conditia de where si din cele 100.000 se ia doar inregistrarea relevanta.

    select
    *
    from Document
    inner join DocumentDetail on Document.DocumentId = DocumentDetail.DocumentId and Document.DocumentId = 1
    inner join InvoiceDetail on DocumentDetail.DocumentDetailId = InvoiceDetail.InvoiceDetailId
    option(force order) -- pentru a nu fi reordonat querry-ul

    Teoretic acum ar trebui sa se faca joinul dintre DocumentDetail si InvoiceDetail doar cu un match pe inregistrarea relevanta (dupa ce se aplica conditia de on dintre Document si DocumentDetail se foloseste inputul si se merge mai departe doar cu 1 inregistrare in loc de 100.000 cum ar fi fost in cazul anterior).

    Intrebarea este daca al 2-lea caz, intradevar va citi din InvoiceDetail doar 1 inregistrare in loc de 100.000

    Mersi,
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems