NOT IN = NOT EXPECTED

Da pro­gram­miert man schon Jahr­zehnte lang T-SQL und erlebt doch noch Über­ra­schun­gen bei ver­meint­lich ein­fa­chen Befeh­len. Jüngst haben wir in einer Kun­den­um­ge­bung ver­schie­dene Opti­mie­run­gen durch­ge­führt und unter ande­rem NOT IN Befehle durch LEFT JOINs aus­ge­tauscht. Erwar­tet haben wir ein iden­ti­sches Abfra­ge­er­geb­nis bei deut­lich bes­se­rer Per­for­mance. Aber weit gefehlt. Aus einem uns zu dem Zeit­punkt noch nicht bekann­ten Grund lie­ferte die linke Ver­bin­dung“ ein voll­kom­men ande­res Ergeb­nis als das zuvor ver­wen­dete IN-Kom­mando. Nach einer lang­wie­ri­gen Suche, mit wie­der­hol­ten Zwei­feln an der eige­nen Fach­kom­pe­tenz, haben wir den Grund schließ­lich gefun­den. Und wie sich her­aus­ge­stellt hat, ist die­ser selbst für viele alte Hasen“ über­ra­schend. Also las­sen auch Sie sich über­ra­schen und nicht trau­rig sein – Sie sind in bes­ter Gesell­schaft… ;o) wei­ter­le­sen…