Toon posts:

Acces probleem met make table query

Pagina: 1
Acties:
  • 119 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo iedereen,

Ik heb een probleem met Acces waar ik niet uitkom en ik niets over kan vinden.
Ik heb al gekeken op technet en bij google en heb ook al een post gedaan in de newsgroepen van Microsoft maar kom er niet uit.

Mijn probleem:
-------------------

Ik heb een query die uit een Oracle database records ophaald.
Deze query draait in nog geen 20 seconden en komt terug met 70.000 records iets wat nog erg klein is gezien ik nu alleen gegevens van deze maand ophaal en uiteindelijk van dit gehele jaar moet ophalen.
Zodra ik deze query omzet naar een "Make Table Query" en dus verder niets verander duurd het draaien daarvan bijna 36 uur.
Ik snap hier werkelijk helemaal niets van.
Ik heb het met Acces 97, 2000 en met XP geprobeerd maar niets helpt.
Heeft iemand enig idee?

  • JamesTiberius
  • Registratie: Oktober 2000
  • Laatst online: 08-03-2006

JamesTiberius

Feel the magic

geen ervaring mee, maar wel een suggestie: zou je de betreffende tabel niet geautomatiseerd kunnen importeren (1x per dag ofzo) in access (vanuit access of vanuit oracle) om vervolgens op die geimporteerde tabel de query uit te voeren?

I laugh in the face of danger ... ... then I hide and wait until it goes away -


Verwijderd

Topicstarter
JamesTiberius schreef op 11 April 2003 @ 08:55:
geen ervaring mee, maar wel een suggestie: zou je de betreffende tabel niet geautomatiseerd kunnen importeren (1x per dag ofzo) in access (vanuit access of vanuit oracle) om vervolgens op die geimporteerde tabel de query uit te voeren?
Dit is ook de bedoeling, maar ik moet nu eerst een start maken.
Uiteindelijk laat ik hem kijken naar het laatste dat al binnen is, en laat hem vanaf daar de rest binnen halen.
Dat gaat met de Append functie, en ook die biet geen oplossing voor mijn probleem. Die doet er namelijk net zolang over.
Ik had de Table namelijk al nagemaakt en geprobeerd te vullen met een Append.

Verwijderd

Topicstarter
Heeft er dan niemand nog een tip voor me :? :? :?
Kan me haast niet voorstellen. :P

  • Boss
  • Registratie: September 1999
  • Laatst online: 17-09 15:14

Boss

+1 Overgewaardeerd

Je kan misschien met een traffic analyzer kijken wat voor data er dan heen en weer gaat. Misschien een paar andere instellingen van je oracle-client?

Bij het openen van de tabel worden soms alleen maar de records binnengehaald die je op het scherm ziet. Dan lijkt het misschien sneller, maar is misschien helemaal niet zo?

En als je de gekoppelde oracle-tabel vanuit Access probeert te exporteren naar een excel file oid, gaat dat wel snel?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

acces haalt in het begin ook niet alles op dacht ik .....

druk eens op dat pijltje naar het laatste record dan zul je waarchijnlijk zien dat dat enorm lang duurt omdat hij dan al die records wel binnenhaalt.

Dat ie je ook wel als je het balkje in je resultaat helemaal naar beneden sleept .. dan staat hij niet beneden maar opeens halverwege

100% zeker kan het niet zeggen maar wat jij zegt komt me bekend voor.
dus nou ja dat was een beetje mijn conclusie

edit: btw let op hoe je je joins maakt dat kan enorm kwa tijd schelen
Dus rechts klikken op die lijn van die join en dan kun je bijvkiezen voor,
alles binnenhalen van tabel a en allen passende waardes van tabel b
moet naturlijk wel binnen je querie passen, maar het kan enorm schelen

[ Voor 24% gewijzigd door Fish op 14-04-2003 17:51 ]

Iperf


Verwijderd

Topicstarter
fish schreef op 14 April 2003 @ 17:48:
acces haalt in het begin ook niet alles op dacht ik .....

druk eens op dat pijltje naar het laatste record dan zul je waarchijnlijk zien dat dat enorm lang duurt omdat hij dan al die records wel binnenhaalt.

Dat ie je ook wel als je het balkje in je resultaat helemaal naar beneden sleept .. dan staat hij niet beneden maar opeens halverwege

100% zeker kan het niet zeggen maar wat jij zegt komt me bekend voor.
dus nou ja dat was een beetje mijn conclusie

edit: btw let op hoe je je joins maakt dat kan enorm kwa tijd schelen
Dus rechts klikken op die lijn van die join en dan kun je bijvkiezen voor,
alles binnenhalen van tabel a en allen passende waardes van tabel b
moet naturlijk wel binnen je querie passen, maar het kan enorm schelen
Als ik op het peiltje druk staat alles er meteen.
Hij heeft naar mijn idee dus wel al alles binnen gehaald.

Tevens gaat een export naar Excel niet gezien het gaat om meer dan 70.000 record en Excel er maar 65.000 aan kan.

  • Againzender
  • Registratie: Maart 2002
  • Laatst online: 16-09 14:13
Verwijderd schreef op 15 April 2003 @ 07:28:
[...]


Tevens gaat een export naar Excel niet gezien het gaat om meer dan 70.000 record en Excel er maar 65.000 aan kan.
Je kan hem naar een textfiletje dumpen, dat moet altijd lukken, hoe lang duurt het dan?

Waar staat die Access applicatie? Toevallig op een drukke server, of achter een trage verbinding? En hoe groot is die Access-db? ls die enorm groot dan worden ze er meestal ook niet sneller van.

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Tips:
Gebruik Tools -> Database Utilities -> Compact and Repair Database op de Access-database.
Leg zo min mogelijk indexen op een tabel waar veel in gewijzigd moet worden.
Ga niet alle records 1 voor 1 in de tabel stoppen maar gebruik INSERT INTO tabelnaam (kolom1, kolom2) SELECT ding1, ding2 FROM Oracletabel

Verwijderd

Topicstarter
Againzender schreef op 15 April 2003 @ 08:04:
[...]

Je kan hem naar een textfiletje dumpen, dat moet altijd lukken, hoe lang duurt het dan?

Waar staat die Access applicatie? Toevallig op een drukke server, of achter een trage verbinding? En hoe groot is die Access-db? ls die enorm groot dan worden ze er meestal ook niet sneller van.
Die Acces database is geheel leeg op een paar link tables na.
En die 1e query.
Output naar TXT kan ik wel even testen, maar ik zou graag een normale oplossing willen hebben.
Het moet namelijk gewoon werken.
Nu ben ik nog maar bezig om gegevens vanaf het begin van deze maand binnen te halen, maar uiteindelijk moet ik minstens de gegevens hebben vanaf het begin van dit jaar.

De database staat lokaal, en ik heb de verbinding getest en die blijft een response houden voor mijn query en tijdens van gemiddeld 40ms.
De Oracle data staat aan de andere kant van een 2M verbinding.

Verwijderd

Topicstarter
Arnaud schreef op 15 April 2003 @ 08:24:
Tips:
Gebruik Tools -> Database Utilities -> Compact and Repair Database op de Access-database.
Leg zo min mogelijk indexen op een tabel waar veel in gewijzigd moet worden.
Ga niet alle records 1 voor 1 in de tabel stoppen maar gebruik INSERT INTO tabelnaam (kolom1, kolom2) SELECT ding1, ding2 FROM Oracletabel
Dank voor de tip, maar zo heb ik mijn query al.

Verwijderd

Heb je al eens een pass-through query geprobeerd?

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Hoe lang duurt het als je de tabel linkt via File -> Get External Data -> Link Tables?

Ik heb een vergelijkbaar iets een keer in ASP/VBScript en Access gedaan op een PIII-733. In een webformulier werden 5000 records gecopy/pasted. Dit formulier werd gepost en daarna werd ieder record 1 voor 1 gechecked op een aantal randvoorwaarden (5000 SELECT-queries) en werden de geldige gegevens in de database geschreven (2000 INSERT-queries). Inclusief het posten van de data over een 256/64 kbps-ADSL-lijn duurde dit ongeveer 90 seconden. In jouw geval (1 SELECT-query, "1" UPDATE-query, 2M verbinding) zou dit niet veel langer mogen duren en ZEKER geen 36 uur.

Geef eens wat code zodat we verder kunnen helpen.

Verwijderd

Topicstarter
Arnaud schreef op 15 April 2003 @ 10:08:
Hoe lang duurt het als je de tabel linkt via File -> Get External Data -> Link Tables?

Ik heb een vergelijkbaar iets een keer in ASP/VBScript en Access gedaan op een PIII-733. In een webformulier werden 5000 records gecopy/pasted. Dit formulier werd gepost en daarna werd ieder record 1 voor 1 gechecked op een aantal randvoorwaarden (5000 SELECT-queries) en werden de geldige gegevens in de database geschreven (2000 INSERT-queries). Inclusief het posten van de data over een 256/64 kbps-ADSL-lijn duurde dit ongeveer 90 seconden. In jouw geval (1 SELECT-query, "1" UPDATE-query, 2M verbinding) zou dit niet veel langer mogen duren en ZEKER geen 36 uur.

Geef eens wat code zodat we verder kunnen helpen.
SELECT EXAV_PROBLEM_HISTORY.* INTO Test_PH
FROM EXAV_PROBLEM_HISTORY
WHERE (((EXAV_PROBLEM_HISTORY.MODIFY_DATETIME)>"418003200"));

Verwijderd

Topicstarter
Verwijderd schreef op 15 April 2003 @ 08:51:
Heb je al eens een pass-through query geprobeerd?
Nee, hoe moet dit dan ?????

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Zodra ik deze query omzet naar een "Make Table Query" en dus verder niets verander duurd het draaien daarvan bijna 36 uur.
en
SELECT EXAV_PROBLEM_HISTORY.* INTO Test_PH
FROM EXAV_PROBLEM_HISTORY
WHERE (((EXAV_PROBLEM_HISTORY.MODIFY_DATETIME)>"418003200"));
waar is dan de "Make Table Query"?

Volgens mij heb je in Access al de tabelstructuur van Oracle nagemaakt en plak je de geselecteerde gegevens daar gewoon in. De redenen dat dit zo lang kan duren zijn:
1) Verkeerde cursor in/connectie met Oracle (data wordt dan toch record voor record opgehaald)
2) Verkeerde datatypes in Access (conversies kosten ook tijd)
3) Extreem langzame machine met Access.

Lees deze informatie uit de access-helpfile op je systeem eens: [url]mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\Office10\1033\acmain10.chm::/html/acdecImportingAttachingDataS.htm[/url]

Verwijderd

Verwijderd schreef op 15 april 2003 @ 10:43:
[...]


Nee, hoe moet dit dan ?????
Een pass through query maak je aan via je de menu balk.
Als je in de query editor zit, ga je naar Query, dan naar SQL specific en daar staat pass through tussen.
Hou er wel rekening mee dat je met een pass through alleen maar queries kan uitvoeren en geen INSERTS enzo (richting Access tabellen dus).
Als je een pass through draait dan zit er geen jet engine tussen en kan je eens zien hoe snel je data nu binnen is.

Verwijderd

Topicstarter
Arnaud schreef op 15 April 2003 @ 11:01:
[...]

en

[...]

waar is dan de "Make Table Query"?

Volgens mij heb je in Access al de tabelstructuur van Oracle nagemaakt en plak je de geselecteerde gegevens daar gewoon in. De redenen dat dit zo lang kan duren zijn:
1) Verkeerde cursor in/connectie met Oracle (data wordt dan toch record voor record opgehaald)
2) Verkeerde datatypes in Access (conversies kosten ook tijd)
3) Extreem langzame machine met Access.

Lees deze informatie uit de access-helpfile op je systeem eens: [url]mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\Office10\1033\acmain10.chm::/html/acdecImportingAttachingDataS.htm[/url]
Door het commando "INTO" is het een make table Query, kijk maar als je hem standaard aanmaakt in Acces.

Verwijderd

Topicstarter
Verwijderd schreef op 15 April 2003 @ 12:11:
[...]

Een pass through query maak je aan via je de menu balk.
Als je in de query editor zit, ga je naar Query, dan naar SQL specific en daar staat pass through tussen.
Hou er wel rekening mee dat je met een pass through alleen maar queries kan uitvoeren en geen INSERTS enzo (richting Access tabellen dus).
Als je een pass through draait dan zit er geen jet engine tussen en kan je eens zien hoe snel je data nu binnen is.
Ik heb dit geprobeerd, maar dan wil hij ineens weer een koppeling hebben naar de database.
Als ik die Oracle koppeling aangeef, dan krijgt ik foutmelding 00911 dat er _ gebruikt worden.

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Door het commando "INTO" is het een make table Query, kijk maar als je hem standaard aanmaakt in Acces.
Dit is een rare tik van Access. Een Make Table Query lijkt mij een query die een tabel maak (oftewel CREATE TABLE... zie ook http://www.devguru.com/Te...uickref/create_table.html). Als je een Append-Query maakt dan levert dit ook een "INTO" op. Dit soort queries heten toch echt INSERT-queries (zie ook http://www.devguru.com/Te...quickref/insert_into.html).

De hierboven genoemde Pass-through-query is in feite niets anders dan een gelinkte tabel. Je hebt nog niet verteld hoe snel dat is
Hoe lang duurt het als je de tabel linkt via File -> Get External Data -> Link Tables?

Verwijderd

Verwijderd schreef op 15 April 2003 @ 15:14:
[...]


Ik heb dit geprobeerd, maar dan wil hij ineens weer een koppeling hebben naar de database.
Als ik die Oracle koppeling aangeef, dan krijgt ik foutmelding 00911 dat er _ gebruikt worden.
Heb je wel de juiste (of laatste) Oracle drivers geinstalleerd op je computer?
Bij een pass through query moet je wel je link opgeven met de database maar dat is dezelfde als waarmee je je tabellen linkt. Dat zou dus moeten werken.
Zou toch eens in de richting van je drivers kijken.

Verwijderd

Topicstarter
Verwijderd schreef op 16 April 2003 @ 08:17:
[...]

Heb je wel de juiste (of laatste) Oracle drivers geinstalleerd op je computer?
Bij een pass through query moet je wel je link opgeven met de database maar dat is dezelfde als waarmee je je tabellen linkt. Dat zou dus moeten werken.
Zou toch eens in de richting van je drivers kijken.
Ik heb de drivers nog eens nagekeken en zelfs nog eens de laatste er op gezet, maar niets helpt.
Het blijft ook een raar probleem.
Ik haal ook veel data vanuit een Ingres database en de output is daar velemalen groter, maar die loopt wel als een trein.
En de aelecty gebeurd op een soortgelijk veld.

Heel raar. |:( |:( 8)7

Verwijderd

Heb je het al eens op een andere PC geprobeerd ? En op welke OS'en ? Probeer eens een andere als dat nog niet het geval was.
En wat gebeurt er als je het via VBA code probeert icm ole-db?

Verwijderd

Topicstarter
Verwijderd schreef op 17 April 2003 @ 09:19:
Heb je het al eens op een andere PC geprobeerd ? En op welke OS'en ? Probeer eens een andere als dat nog niet het geval was.
En wat gebeurt er als je het via VBA code probeert icm ole-db?
Ik heb het geprobeerd op 3 machine's met W2k en W98, ook een VBA maakt geen verschil.
Zo ondertussen word ik er helemaal gek van.

Verwijderd

Misschien een gekke gedachte, maar heb je:
- al eens een trace gedaan op je oracle server op het moment dat je vanuit access de query draait.
- de query die je in access draait al eens op de oracle server zelf uitgevoerd om te kijken hoe snel die is.

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
[logical mode]
Analysis 1.1: Access is snel genoeg
Analysis 1.2: Oracle is snel genoeg
Analysis 1.3: Directe connectie Oracle <> Access is niet snel genoeg
Idea 1: Verbeter directe connectie Oracle <> Access
Result 1: Tijdsverlies, frustratie, geen resultaat GOTO Idea 2
Idea 2: Vermijd gebruik directe connectie Oracle <> Access
Analysis 2.1: Oracle kan exporteren naar .csv
Analysis 2.2: Access kan importeren uit .csv
Result 2: Dient bevestigd te worden door TS
[/logical mode]

Verwijderd

Topicstarter
Arnaud schreef op 17 April 2003 @ 11:22:
[logical mode]
Analysis 1.1: Access is snel genoeg
Analysis 1.2: Oracle is snel genoeg
Analysis 1.3: Directe connectie Oracle <> Access is niet snel genoeg
Idea 1: Verbeter directe connectie Oracle <> Access
Result 1: Tijdsverlies, frustratie, geen resultaat GOTO Idea 2
Idea 2: Vermijd gebruik directe connectie Oracle <> Access
Analysis 2.1: Oracle kan exporteren naar .csv
Analysis 2.2: Access kan importeren uit .csv
Result 2: Dient bevestigd te worden door TS
[/logical mode]
Zou een optie kunnen zij, maar de Oracle database staat bij een klant van ons, en daar hebben we geen toegang toe.
Ik kan dus niet vanaf die Oracle server een export doen.
Wel zal ik de klant eens mailen of zei dit kunnen doen, want ik ben tenslotten voor een rapportage voor hun bezig.

Echter heb ik liever dat Acces gewoon gaat werken, gezien de toekomst met eventuele aanpassingen.

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Doe in ieder geval eens een aantal testen zoals eerder door mij voorgesteld en post de resultaten dan ook hier.

Zorg er verder altijd voor dat je de nieuwste versie van de Microsoft Data Access Components draait:
Download; http://download.microsoft...42b2b4fa0d76/mdac_typ.exe
Check; http://download.microsoft...-bce8-afd65f8f8de5/cc.exe
Info; http://msdn.microsoft.com...loads/list/dataaccess.asp

Verwijderd

Topicstarter
Arnaud schreef op 17 april 2003 @ 13:45:
Doe in ieder geval eens een aantal testen zoals eerder door mij voorgesteld en post de resultaten dan ook hier.

Zorg er verder altijd voor dat je de nieuwste versie van de Microsoft Data Access Components draait:
Download; http://download.microsoft...42b2b4fa0d76/mdac_typ.exe
Check; http://download.microsoft...-bce8-afd65f8f8de5/cc.exe
Info; http://msdn.microsoft.com...loads/list/dataaccess.asp
Het duurd nog steeds even lang.
Echt balen dat niets lijkt te helpen.

[ Voor 195% gewijzigd door Verwijderd op 18-04-2003 07:41 . Reden: Was dit wat je bedoeld met resultaat ? ]


Verwijderd

Topicstarter
Current Status
No errors or warnings detected!

Na de update kwam dit uit de comcheck, het lijkt er nog niet op dat het sneller gaat maar morgen weet ik dat pas zeker natuurlijk.
Voorlopig is hij weer aan het draaien.
Ik zal je het laten weten.

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Met "Post de resultaten dan ook hier" bedoelde ik de resultaten van
Hoe lang duurt het als je de tabel linkt via File -> Get External Data -> Link Tables?
en
Je kan hem naar een textfiletje dumpen, dat moet altijd lukken, hoe lang duurt het dan?
Hoeveel MB is de Oracle export eigenlijk? en wat zijn de specs van de Oracle-server en de Access-machine?

Verwijderd

Topicstarter
Arnaud schreef op 17 April 2003 @ 18:31:
Met "Post de resultaten dan ook hier" bedoelde ik de resultaten van
[...]
en
[...]


Hoeveel MB is de Oracle export eigenlijk? en wat zijn de specs van de Oracle-server en de Access-machine?
Het linken van de table duurd maar 5 seconden.
Specs van die Oracle server heb ik niet, ik weet alleen dat het op een Unix server draaid waar alleen Oracle op draaid.

De spec's van de Acces machine zijn:
PIII 1000Mhz
384MB
20GB HD
100Mbit LAN

Verwijderd

Wat voor verbinding heb je met die Oracle Server ?

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
OK, de antwoorden op onze vragen komen langzamerhand binnen. Even een samenvatting + uitbreiding:

Oracle-query = 20 sec.
Access-import uit Oracle = 36 uur.
Table-link met Oracle = 5 sec.
Textfile-dump vanuit Oracle = ONBEKEND qua tijd en aantal MB
Textfile-import vanuit Access = ONBEKEND qua tijd
Oracle-machine Specs = ONBEKEND (niet echt relevant)
Access-machine Specs = PIII-1000, 384 MB, ONBEKEND OS, ONBEKENDE Access-versie
Verbinding met Oracle-Server = 2 MBIT (synchroon, of asynchroon?), type = ODBC

Graag de ONBEKENDE info aanvullen

Verwijderd

Topicstarter
Arnaud schreef op 19 April 2003 @ 12:42:
OK, de antwoorden op onze vragen komen langzamerhand binnen. Even een samenvatting + uitbreiding:
Oracle-query = 20 sec.
Access-import uit Oracle = 36 uur.
Table-link met Oracle = 5 sec.
Textfile-dump vanuit Oracle = Kan ik niet bij staat bij de klant
Textfile-import vanuit Access = 36 uur
Oracle-machine Specs = ONBEKEND (niet echt relevant)
Access-machine Specs = PIII-1000, 384 MB, ONBEKEND OS, ONBEKENDE Access-versie
Verbinding met Oracle-Server = 2 MBIT (synchroon, of asynchroon?(geen idee)), type = ODBC

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Ik ben bang dat ik je zo niet veel verder kan helpen. De enige extra info die je geeft is dat je geen textfile-dump vanuit Oracle kunt maken (waarmee "plan b" vervalt) en dat de textfile-import vanuit Access ook 36 uur duurt (hoe heb je dat dan getest?).

Als je wilt dat ik je verder help dan zou ik graag je tabledefinitie zien (bijv ID=autonumber, naam=text-50, geslacht=text-1, overige_opmerking=memo, etc) en willen weten hoe groot (in MB) je textfile-import is.

Verwijderd

Topicstarter
Arnaud schreef op 22 April 2003 @ 11:31:
Ik ben bang dat ik je zo niet veel verder kan helpen. De enige extra info die je geeft is dat je geen textfile-dump vanuit Oracle kunt maken (waarmee "plan b" vervalt) en dat de textfile-import vanuit Access ook 36 uur duurt (hoe heb je dat dan getest?).

Als je wilt dat ik je verder help dan zou ik graag je tabledefinitie zien (bijv ID=autonumber, naam=text-50, geslacht=text-1, overige_opmerking=memo, etc) en willen weten hoe groot (in MB) je textfile-import is.
Dan houd het op voor me.
In iedergeval bedankt voor je tijd.

Verwijderd

Hoe groot is je access database eigenlijk na de import ?
Oftewel importeer je niet heel veel MBs en is je verbinding toch de bottleneck ?
Probeer dan eens een paar records te importeren en te kijken hoe lang dat duurt.
Pagina: 1