Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Abfrage durch Parameter langsamer?

Mitglied: 70620

70620 (Level 1)

04.12.2008, aktualisiert 14:16 Uhr, 4320 Aufrufe, 10 Kommentare

Hallo zusammen

ich habe hier eine Abfrage wo ich nach Datum selektiere. Die Tabelle hat einige Millionen Datensätze und ist aufs Datum optimiert.
Also
01.
>=#01.01.2008# Und <=#31.01.2008# 
Das geht ruckzuck.. ca 3sek

Schreibe ich jedoch
01.
>=[begin] Und <=[end] 
und fülle die Werte aus, dauerts über eine Minute. Die Abfrage starte ich direkt per Mausklick.

Woran kann dies nun liegen? Akzeptiert er die Eingaben nicht als Datum?

thx4help
Mitglied: AndreasHoster
04.12.2008 um 10:22 Uhr
Es würde helfen, die ganze Abfrage zu sehen.

Aber mal so ins Blaue hinein:
Kann es sein, daß [begin] und [end] Spalten in der Tabelle sind und Du damit Access zwingst für jede Zeile in der Tabelle einen neuen Vergleich zu machen da möglicherweise in jeder Zeile die Werte von Begin und End anders sind?
Das ist natürlich aufwendiger als einfach nur einen festen Bereich aus der DB zu selektieren.
Bitte warten ..
Mitglied: 70620
04.12.2008 um 10:42 Uhr
Nein sind keine Spaltennamen.

Die Abfragen wäre zb so (mal ein wenig verkürzt):
01.
SELECT PRUEFSTART 
02.
FROM TBL 
03.
WHERE (((TBL.PRUEFSTART)>=#11/28/2008# And (TBL.PRUEFSTART)<=#12/3/2008#)); 
04.
 
05.
SELECT PRUEFSTART 
06.
FROM TBL 
07.
WHERE (((TBL.PRUEFSTART)>=[begin] And (TBL.PRUEFSTART)<=[end]));
Also wie zu sehen ist ändert sihc die Abfrage nicht wirklich. Dennoch scheint es nicht zu klappen.
Das Feld PRUEFSTART hat übrigens Werte im Format TT.MM.YYYY SS:MM:SS also zb 01.01.2008 13:50:15

Als Eingabe für die Parameter ist egal ob ich die Uhrzeit mit reinschreibe oder nur das Datum.
Bitte warten ..
Mitglied: AndreasHoster
04.12.2008 um 10:59 Uhr
Ich finde, das sollte funktionieren.
Falls Access Proble beim Konvertieren der Variablen in ein Datum hat, könnte man mal folgendes ausprobieren:
01.
SELECT PRUEFSTART 
02.
FROM TBL 
03.
WHERE (((TBL.PRUEFSTART)>=CDate([begin]) And (TBL.PRUEFSTART)<=CDate([end])));
Aber eigentlich finde ich auch, daß es da keinen Unterschied geben sollte.
Bitte warten ..
Mitglied: 70620
04.12.2008 um 11:10 Uhr
Leider kein Unterschied, dauert auch ewig.
Ist mir unverständlich wieso.. der muss doch den SQL nach Eingabe der Parameter genauso schreiben wie oben und dann ausführen...

Habe auch versucht als Parameter dann sowas wie #01.01.2008# einzugeben, also mit # aber geht nicht.
Auch in SQL dann statt [begin] ein #[begin]# funktioniert nicht.
Bitte warten ..
Mitglied: AndreasHoster
04.12.2008 um 11:45 Uhr
Als Ursache bleibt eigentlich dann nur noch, daß Access bei Verwendung von Variablen nicht erkennt, daß er einen passenden Index hat und auf einen Full Table Scan umschwenkt.
Auf einem SQL Server könnte man das mit dem Query Optimizer rauskriegen, bei Access kenne ich keine Möglichkeit rauszubekommen was er tatsächlich macht oder in die Indexverwendung einzugreifen.
Bitte warten ..
Mitglied: Biber
04.12.2008 um 11:55 Uhr
Moin fiacyberz,

Du darfst nicht immer so ablehnend mit diesem M$-Geraffel umgehen
- verwende ruhig auch mal zumindest die dokumentierten Features.

Deklariere die Eingabeparameter "begin" und "end" in der Abfrage.

Dokumentierte Syntax:
01.
PARAMETERS begin date, end date; 
02.
SELECT PRUEFSTART 
03.
FROM TBL 
04.
WHERE (((TBL.PRUEFSTART)>=[begin] And (TBL.PRUEFSTART)<=[end]));
P.S. Ich würde NICHT Worte wie "begin" und "end" als Variablennamen in dürftig dokumentierten Umgebungen wählen.
Nimm lieber die deutschen Worte "Beginn" und "Ende" oder aber so etwas wie "dBegin" und "dEnd".

Grüße
Biber
Bitte warten ..
Mitglied: 70620
04.12.2008 um 12:01 Uhr
Der Zugriff geht per ODBC auf eine Oracle DB.
Von daher kann ich da wenig sehen und machen habe dort keinen Zugriff

Habe das Ganze nun mal per VBA gemacht, sprich erzeuge die Abfrage in VBA und habe somit die Variable dort umgewandelt und läuft so wunderbar.
Nur würde die Abfrage lieber direkt gespeichert haben, damit mans besser ändern kann.
Bitte warten ..
Mitglied: 70620
04.12.2008 um 12:56 Uhr
Wieso ablehend? Bin ich doch gar nicht.

Parameters kannte ich noch gar nicht, bringt aber leider keine Änderung, auch beginn statt begin ändert nichts.

Wie gesagt über VBA klappts wunderbar, weil ich da die Parameter ja direkt richtig umwandel und dann die Abfrage per SQL Befehl speichern kann. Aber die liegt dann eben in VBA und eine schnelle Änderung ist da nicht so leicht da man immer in den Code muss.
Bitte warten ..
Mitglied: Biber
04.12.2008 um 13:51 Uhr
Moin fiacyberz,

wenn es dann über dieses dynamische SQL zu lange dauert, dann mach doch aus dieser Winz-Abfrage eine Stored Procedure mit zwei Parametern dBegin/dEnd, die das Ganze dann serverseitig abfackelt.
Dann ist die Abfrage kompiliert, oprimiert und ohnehin 2000x schneller, als Du sie vom Client aus jemals abschiessen kannst.

Grüße
Biber
Bitte warten ..
Mitglied: 70620
04.12.2008 um 14:16 Uhr
Stored Procedure läuft auf den Server, richtig? Da habe ich leider keinen Zugriff drauf.
Könnte ich evtl. bekommen, jedoch ist das System was ich grad erstelle nur eine Art Testsystem und von daher werde ich dafür wohl nicht die Rechte bekommen auf dem Server was zu machen denke ich und so nötig wäre es hierfür dann wohl doch nicht.

Wäre halt ein Nice-To-Have wenn ich die Abfrage direkt mit Access-Mitteln (easy) bearbeiten könnte ohne in VBA Code zu gehen. Aber funktioniert so natürlich auch.

Werde das Problem für mich erstmal abschliessen, vielleicht finde ich ja irgendwann noch eine Erklärung warum es mit Parametern langsamer ist.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Abfrage function und weitergabe der Parameter

gelöst Frage von complexBatch & Shell6 Kommentare

Hallo zusammen, bin leider noch blutiger anfänger im Bereich Powershell. Zu meinem Problem: Ich möchte ein Script schreiben, dass ...

Lizenzierung

FlexLm Server Parameter abfragen

Frage von runner-ralfLizenzierung3 Kommentare

Hallo alle zusammen, ich weiß nicht ob ich hier richtig bin. Ich habe eine Frage zum FlexLM Tool. Ich ...

Datenbanken

Datenbank Abfrage sehr langsam! Bitte um Hilfe

Frage von samet22Datenbanken12 Kommentare

Hallo, Ich habe hier leider ein etwas komisches "Problem" Wir haben von der Firma "Mesonic" ein ERP Programm Namens ...

Datenbanken

T-SQL Abfrage, Erstellen einer Sicht mit Parametern, die aus einer Schleife (array) stammen

gelöst Frage von AximandDatenbanken3 Kommentare

Hallo, ich ochse gerade an einem Problem rum. Ich habe in Excel eine Listbox. Aus dieser sollen Lagerplätze gewählt ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 10 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 16 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server25 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

SAN, NAS, DAS
Qnap TS-453S Pro - Anbindung Active Directory
Frage von JuckieSAN, NAS, DAS13 Kommentare

Hallo zusammen, ich habe hier eine Qnap TS-453S Pro die sich mal so absolut gar nicht in das Active ...