Warum geht dieser Sybase-Fehler mit einer Änderung der Abfrage verloren?

8

Eine Abfrage, die ich seit Jahren verwende, hat plötzlich einen seltsamen Fehler ausgelöst. Wenn ich eine kosmetische Änderung an der Abfrage (1 + x statt x + 1) vorgenommen habe, tritt der Fehler nicht mehr auf. Der gespeicherte Prozess, über den er sich beschwert, existiert nicht mehr auf dem Server!

Ich bin sehr neugierig, wenn jemand irgendwelche Ideen hat, was das Problem ist und warum diese "Änderung" es behebt?

Die Abfrage vor:

%Vor%

Die Abfrage nach:

%Vor%

Der Fehler, der ausgelöst wird:

%Vor%

Ich habe mich gefragt, ob jemand Ideen hat, was hier vorgeht?

Bearbeiten. Hier ist der gespeicherte Proc.

%Vor%     
anthonybell 30.01.2015, 17:04
quelle

1 Antwort

3

Der Optimierer von Sybase hat möglicherweise einen Plan zwischengespeichert, der fälschlicherweise auf die gelöschte Prozedur verweist. Es berücksichtigt die Geschichte und speichert alle Arten von Statistiken und generiert Pläne basierend auf vielen zwischengespeicherten Informationen. Gelegentlich habe ich festgestellt, dass bei sehr großen Abfragen sehr schlechte Pläne erstellt werden können. Ich bin einige Male auf dieses Problem gestoßen und habe es Sybase als Fehler gemeldet, aber sie konnten es nicht reproduzieren (und ich konnte es auch nicht zuverlässig reproduzieren).

Die Problemumgehung besteht darin, entweder die Abfrage leicht zu ändern oder eine Plananweisung hinzuzufügen, um die fehlerhaften Pläne zu überschreiben. Abfragen mit PLAN-Anweisungen verwenden den bereitgestellten Plan, anstatt einen Plan zu erstellen. Hoffe das hilft.

    
Owen Johnson 05.02.2015 20:57
quelle