Eine Anwendung verursacht eine hohe Belastung unserer Sql Server 2005-Datenbank. Wir haben keine Kontrolle über die Anwendung, dass diese Abfrage hundres Mal pro Minute läuft:Unerwarteter Tabellenscan für ID! = ID
select id,col1,col2,col3 from table where id != id
Notiere die id = id, eine Reihe Bedeutung ist, um sich nicht gleich. Es überrascht nicht, das Ergebnis ist immer keine Zeilen gefunden. Sql Server führt jedoch bei jeder Ausführung dieser Abfrage einen Clustered-Index-Scan-Scan durch!
Die id-Spalte ist definiert als:
varchar(15) not null primary key
Der Abfrageplan eine große Zahl für „Geschätzte Anzahl der Zeilen“ zeigt. Hat jemand eine Idee, warum Sql Server den Tabellenscan braucht, um das Offensichtliche herauszufinden?
Danke für die Zusammenfassung, aber wir werden wahrscheinlich mit Option # 5 gehen: mehr Hardware drauf werfen. Arbeiten an 1 und 2 auch. :) – Andomar
Es dauerte ein paar Monate, aber wir haben endlich einen Entwickler der App auf unserer Website, und er änderte die Anwendung innerhalb einer Stunde zu einer intelligenteren Abfrage. – Andomar