Zitat von
r3v0:
erste: Gibt es eine Alternative von der Abfrage is NULL?
Ist finde ich etwas schwer zu beantworten. Ich habe ehrlich gesagt noch nicht ganz verstanden, was genau hier auf is NULL geprüft wird und/oder warum. An sich versucht man natürlich schon im
DB-Design möglichst wenig Attribute im Schema zu haben, die unbestimmt sein können (also NULL werden dürfen).
Ob es eine Alternative gibt hängt also schon allein davon ab, was genau ihr jetzt macht. An sich wäre halt eine Möglichkeit, dass Du die Stored-Procedure an die Anzahl der Argumente anpasst (also für 3, 4 und 5 Argumente je eine erstellst). Wenn ich es richtig verstanden habe, kann es Fälle geben in denen eine ID ansonsten eh nicht in den Daten vorhanden sein kann.
Was ich nicht richtig verstehe ist, was genau auf is Null geprüft werden muss. Wenn es keinen Eintrag mit der entsprechenden ID gibt, dann wird entsprechend nichts getan. Davon ausgehend, dass diese ID eben eindeutig ist, wüßte ich nicht was man da noch mit NULL prüfen kann/muss. Selbst die Überprüfung auf is NULL kommt mir mit 8 Sek. doch etwas sehr langsam vor, da sollte man sich vielleicht wirklich mal den Auswertungsplan anschauen, vielleicht gibt der einem dann Aufschluss über das Problem.
An sich hätte ich jetzt verstanden, dass Du mehrere Relationen (5 oder 6) verknüpfst und hier mit 3 - 5 Datensätzen arbeitest. Dabei gehe ich davon aus, dass eben diese 3-5 IDs in einer Relation der primäre Schlüssel sind und damit 3-5 Tupel identifizieren. Egal wie jetzt weiter verknüpft wird, der
DB-Optimierer wird sicherlich erstmal diese 3-5 Tupel Selektieren. Existiert hier sogar ein Index, sollte das sehr sehr flink gehen. Damit muss diese Relation nicht weiter betrachtet werden, nur noch diese 3-5 Relationen sind interessant. Wie auch immer jetzt die weiteren Verknüpfungen aussehen, solange über die Elemente, die verknüpft werden ein Index angelegt wurde, sollten die Arbeiten extrem flink erledigt werden können (immerhin geht es hier um eine extrem kleine Anzahl von Datensätzen die nach der Selektion nach den IDs übrig bleiben!). Die Relation zwischen der normalen Suchzeit und der Zeit wenn NULL mit abgefragt wird könnte ich mir da nicht erklären (was natürlich auch nicht viel heißt!).