Ich habe DeletedDate Spalten in meinen Tabellen und wann immer ich Abfragen für diese Tabellen schreibe, überprüfe ich normalerweise, um sicherzustellen, DeletedDate IS NULL
. Mein Gedanke war, dass, wenn ich eine indizierte, persistente, berechnete Spalte mit der Bezeichnung IsDeleted erstelle, dass sie meine Abfragen beschleunigen könnte, da sie nur einen einzelnen Bitwert überprüfen müsste, statt jedoch eine Reihe von Daten zu indizieren.Erstelle ich eine indizierte berechnete Spalte, um nach Nullen zu suchen, kauf mir irgendwas?
[IsDeleted] AS (isnull(CONVERT([bit],case when [DeletedDate] IS NULL then (0) else (1) end),(0))) PERSISTED NOT NULL,
jedoch sah ich den Ausführungsplan und es scheint, dass es sieht immer noch an der DeletedDate
Säule (wie ich glaube, ich könnte den Plan falsch liest).
Macht es etwas zu kaufen oder gibt es einen anderen Weg, um es für Abfragen zu beschleunigen, die nur darauf achten, ob die Spalte null ist oder nicht?
Welcher Anteil der Datensätze wird gelöscht? –
@GordonLinoff sehr wenige im Moment, aber wir haben die App noch nicht vollständig entweder – adam0101
Wenn das ein Fall ist, dann suchen Sie nach einer Leistungsverbesserung an einer Stelle, wo Sie noch nicht wissen, dass Sie ein Leistungsproblem haben anfangen mit. Das ist die Definition der vorzeitigen Optimierung. Wenn Sie nach reinem enzyklopädischem Wissen fragen, befürchte ich, dass der beste Weg, eine Antwort zu finden, darin besteht, es selbst zu versuchen und zu messen. –