Hirdetés

Új hozzászólás Aktív témák

  • nyunyu

    félisten

    válasz Szmeby #4780 üzenetére

    Meg az exists egy olyan okossag, ami egesz jo hatekonysagot mutat, annak a probalgatasat is ajanlom.

    Nem volt mindig így.

    Tizenéve még kifejezetten kerülendő antipatternként tanították az EXISTS/NOT EXISTS párost, mivel régi DBken nagyon rosszul futottak.

    Modern DBk optimalizálói viszont végrehajtás előtt át szokták alakítani LEFT JOINra, és úgy futtatják.

    Szóval a
    select *
    from tabla1
    where not exists (select id from tabla2);

    helyett már

    select tabla1.*
    from tabla1
    left join tabla2
    on tabla1.id = tabla2.id
    where tabla2.id is null;

    végrehajtási tervét fogod látni, és futtatási sebességben sem lesz köztük különbség.

    Régebbi/kevésbé fejlett optimalizálóval rendelkező DB motorokon viszont a második kód sokkal gyorsabban fut, mint az első.

Új hozzászólás Aktív témák