Ich habe eine Anwendung in einer SQL Server 2008-Datenbank. Diese Datenbank verfügt über eine gespeicherte Prozedur, die eine der Tabellen abfragt. Diese gespeicherte Prozedur benötigt zwei Parameter: userName und ID
Der Parameter userName wird immer übergeben. Das ID-Feld wird jedoch entweder NULL oder ein tatsächlicher Wert sein. Wenn der Wert etwas anderes als NULL ist, muss ich es in der WHERE-Klausel meiner Abfrage berücksichtigen. Leider bin ich nicht überzeugt, wie das geht. Derzeit versuche ich
%Vor%Danke für Ihre Hilfe!
Hoffentlich effizienter als die Verwendung einer OR-Bedingung:
%Vor%Hinweis: Funktioniert nur, wenn ID ein nicht NULL-fähiges Zeichenfeld ist. (Sie können CAST und COALESCE auch für t. [ID] verwenden, aber dann ist es wahrscheinlich nicht effizienter als eine OR-Bedingung.)
Alternativ können Sie dynamisches SQL in Ihrer gespeicherten Prozedur verwenden, um die Bedingung t. [ID] vollständig wegzulassen, wenn @ID NULL ist.
Ich habe eine Anwendung in einer SQL Server 2008-Datenbank. Diese Datenbank verfügt über eine gespeicherte Prozedur, die eine der Tabellen abfragt. Diese gespeicherte Prozedur benötigt zwei Parameter: userName und ID
Der Parameter userName wird immer übergeben. Das ID-Feld wird jedoch entweder NULL oder ein tatsächlicher Wert sein. Wenn der Wert etwas anderes als NULL ist, muss ich es in der WHERE-Klausel meiner Abfrage berücksichtigen. Leider bin ich nicht überzeugt, wie das geht. Derzeit versuche ich
%Vor%Danke für Ihre Hilfe!
Gruppieren Sie die Bedingungen zusammen
%Vor%Versuchen Sie Folgendes:
%Vor%Beachten Sie, dass dies in einigen Fällen zu einem nicht optimalen Abfrageplan führen kann. Das ist wahrscheinlich keine große Sache in diesem Fall, es sei denn, Ihre Tabelle ist riesig und Sie haben keinen Index für Benutzername und ID.
Hoffentlich effizienter als die Verwendung einer OR-Bedingung:
%Vor%Hinweis: Funktioniert nur, wenn ID ein nicht NULL-fähiges Zeichenfeld ist. (Sie können CAST und COALESCE auch für t. [ID] verwenden, aber dann ist es wahrscheinlich nicht effizienter als eine OR-Bedingung.)
Alternativ können Sie dynamisches SQL in Ihrer gespeicherten Prozedur verwenden, um die Bedingung t. [ID] vollständig wegzulassen, wenn @ID NULL ist.
Tags und Links sql