Avatar billede sorba Nybegynder
08. september 2004 - 21:24 Der er 3 kommentarer og
2 løsninger

Dynamisk sql

Jeg har oprettet noget dynamisk sql,  og har erfaret at det tager væsentligt længere tid at tilgå databasene med dynamisk sql, end det tager at tilgå dem med hardkodet sql. Er det normalt? for så kan dynamisk sql jo ikke bruges til ret meget.
Avatar billede teepee Nybegynder
09. september 2004 - 09:39 #1
Nu kommer det an på hvad du mener med væsentligt længere tid, men det er da rigtigt at fordi koden ikke er kendt af Oracle på forhånd, skal det jo altså lige parses, og det tager tid, men så meget tid er det altså heller ikke. Hvis det tager rigtigt langt tid, tyder det mere på at du mangler nogle indexes.
Avatar billede sorba Nybegynder
09. september 2004 - 15:39 #2
Det tager 2 minutter ekstra. Det kan jo ikke have meget med indexer at gøre, da det jo er den samme tabel jeg tilgår i begge tilfælde....
Avatar billede teepee Nybegynder
10. september 2004 - 09:38 #3
2 min ekstra i forhold til hvad? Ved den samme SQL?
Avatar billede qualjyn Nybegynder
10. september 2004 - 12:49 #4
Altså, dynamisk SQL forstået som execute immediate "<blah>" hvor <blah> er noget sql genereret af en anden rutine?

Hvis det er meget stort og komplekst, kan det skyldes, at der skal foretages en yderligere parsing af SQL'en, da den ikke kan genbruge en tidligere execution plan. Er det på en server der kører cost-based, kan det endvidere skyldes, at den går ud og foretager en række stikprøver på de data der skal benyttes, for at udregne den rigtige execution plan. Den kan desuden godt finde på at skifte mening undervejs.

Sørg eventuelt for at have kørt en dbms_stats.gather_schema_stats eller blot table stats, for at give serveren en bedre mulighed for at orientere sig.
Avatar billede qualjyn Nybegynder
13. juli 2005 - 08:17 #5
Hvis det er SQL indeni et loop, så se om du kan bruge bind-variable istedet for at bruge konstanter med din dynamiske SQL. Og luk spørgsmålet eventuelt spørgsmålet, hvis gather_schema_stats hjalp :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester