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?

Frage Microsoft Microsoft Office

Mitglied: 70620

70620 (Level 1)

04.12.2008, aktualisiert 14:16 Uhr, 4314 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
Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 1 StundeLinux4 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Heiß diskutierte Inhalte
Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing13 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Microsoft Office
Outlook Cache Mode Frage
Frage von GwaihirMicrosoft Office11 Kommentare

Hallo zusammen, bin gerade neu in der Firma und lerne hier einige neue Dinge kennen. Zum Beispiel, dass die ...

Windows Server
Windows Store Apps
gelöst Frage von PeterleBWindows Server11 Kommentare

Gibt es einen Weg, auf Windows Server 2016 Windows Store Apps wie zum Beispiel die HP Smart App zu ...