Ich habe ein Stück Abfrage, die für immer dreht. Ich bin neu in Sachen DBA. Ich würde gerne wissen, was als erstes mit solchen Problemen umgehen würde. Ich schaute auf den Ausführungsplan Die Tabelle hat nur 1 nicht gruppierten Index auf ClassCode. Der Grund, warum ich so viele Klassencodes verwende, ist, dass im SSRS-Berichtsparameter @ClassCode standardmäßig mehrere Werte sind, also über 200.Wie kann ich die Abfrage-Performance verbessern
SELECT PolicyNumber
FROM tblClassCodesPlazaCommercial
WHERE PolicyNumber NOT IN (
SELECT PolicyNumber
FROM tblClassCodesPlazaCommercial
WHERE ClassCode IN (
33489,31439,41894,68189,,01199,68528,67139,68128,739889,
33428,5561,68428,01484,5281,67227,01184,50199,23528,33283,03228,
50499,41594,50427,5181,31484,03199,6481,68239,50439,68489,36127,
50472,67128,23149,33439,03149,5452,23189,50228,01428,69183,50527,
67499,739189,50159,31183,33499,01283,33128,50239,6451,33159,
21199,67272,67127,69427,5451,23239,67199,67449,67189,01599,40228,
50184,5551,33299,7398,40179,40128,50139,7381,33199,50497,23428,33129,
738299,67149,40184,23128,69199,68499,50299,31449,40497,68169,67197,
5191,67259,5252,03489,67459,21299,5262,01181,03428,31483,68183,68228,
31199,40484,738199,03499,31499,40189,7382,67439,21527,50449,01427,
68199,5453,50528,36228,50259,68299,50227,23459,33528,40199,40427,
21289,42594,5283,34489,5251,21228,50197
)
)
Benötigen Sie eine else 0 in dem Fall? Ich würde erwarten, dass Werte, die nicht in der Liste sind, NULL sind, was nicht = 0 ist. Ich könnte mich jedoch irren. So oder so, viel bessere Idee als OP. – scsimon
@scsimon - Einfache Tatsache ist, dass 'Count' Aggregat nicht' NULL' Werte zählt. Wenn ich "0" in "else" Teil hinzufüge, dann wird die Zählung es als einen Wert betrachten und es ebenso zählen, dann wird die Logik zum Werfen gehen –
Danke. Es gibt keinen 'NULL'' ClassCode'. Also sollte ich es "dann 1 Ende" lassen. Richtig? – Oleg