order by in der rowsource einer Listbox ist langsam

07/09/2009 - 13:54 von Antje Kaiser | Report spam
Hallo,
nachdem ich mein letztes Problem prima Clientseitig hinbekommen habe, hier
schon wieder ein neues Problem:
Über eine individuelle Nutzereingabe erstelle ich einen (durchaus komplexen)
SQL-String. Diesen weise ich dann der Rowsource eines Listenfeldes zu. Bisher
hat das auch super geklappt. Nun bin ich aber auf eine SQL-Konstellation
gestoßen, bei der das ganze furchtbar langsam wird. Der SQL-String sieht in
etwa so aus:

select F1, F2, ..., Fx
from T1
where F1 in(W1, W2, ...) and F2 in(select ... from ) and F2 in(select
... from )
order by F3, F4, F5

Das ganze geht prima schnell beim Zuweisen ohne order by. Sobald ich dieses
aber anfüge geht es langsam.
Auf dem SQL-Server selbst làuft das Statement (auch mit order by) in nicht
mal einer Sekunde ab und gibt Antwortsàtze zurück, es muß also irgendwie an
Access liegen. In einem Testformular habe ich den gleichen SQL-String als
Recordsource verwendet zum testen. Auch hier konnte ich die gleichen Effekte
feststellen. Ohne order by geht das Formular sofort auf, mit order by ist es
total langsam (ca. 30 s oder so).
Hat jemand eine Idee hierzu? Ich arbeite mit dem SQL-Server 2005 und Access
2003 im Frontend. Mein Access hat allerdings nur SP2, kann es daran liegen?

Gruß
Antje
 

Lesen sie die antworten

#1 Antje Kaiser
07/09/2009 - 14:12 | Warnen spam
Nun muß ich mir gleich selbst antworten, leider stimmte meine Aussage so
nicht ganz. Im SQL-Server brauchte es jetzt auch lange. Das es ohne order by
schneller geht, war auch nur eine Tàuschung, da er halt die ersten Sàtze
schon anzeigt, auch wenn er die letzten noch gar nicht hat. Mit order by kann
er das natürlich nicht.
Nachdem ich nun analysiert und in einer Tabelle noch einen Index gesetzt
habe, geht es insgesamt schneller. Problem also gelöst.
Gruß
Antje


"Antje Kaiser" wrote:

Hallo,
nachdem ich mein letztes Problem prima Clientseitig hinbekommen habe, hier
schon wieder ein neues Problem:
Über eine individuelle Nutzereingabe erstelle ich einen (durchaus komplexen)
SQL-String. Diesen weise ich dann der Rowsource eines Listenfeldes zu. Bisher
hat das auch super geklappt. Nun bin ich aber auf eine SQL-Konstellation
gestoßen, bei der das ganze furchtbar langsam wird. Der SQL-String sieht in
etwa so aus:

select F1, F2, ..., Fx
from T1
where F1 in(W1, W2, ...) and F2 in(select ... from ) and F2 in(select
... from )
order by F3, F4, F5

Das ganze geht prima schnell beim Zuweisen ohne order by. Sobald ich dieses
aber anfüge geht es langsam.
Auf dem SQL-Server selbst làuft das Statement (auch mit order by) in nicht
mal einer Sekunde ab und gibt Antwortsàtze zurück, es muß also irgendwie an
Access liegen. In einem Testformular habe ich den gleichen SQL-String als
Recordsource verwendet zum testen. Auch hier konnte ich die gleichen Effekte
feststellen. Ohne order by geht das Formular sofort auf, mit order by ist es
total langsam (ca. 30 s oder so).
Hat jemand eine Idee hierzu? Ich arbeite mit dem SQL-Server 2005 und Access
2003 im Frontend. Mein Access hat allerdings nur SP2, kann es daran liegen?

Gruß
Antje

Ähnliche fragen