Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenbankabfrage dauert 13 Sekunden (https://www.delphipraxis.net/154556-datenbankabfrage-dauert-13-sekunden.html)

DeddyH 15. Sep 2010 16:12

AW: Datenbankabfrage dauert 13 Sekunden
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1049854)
SQL-Code:
SELECT * FROM `links` INNER JOIN `kundendaten`.`link_id` ON `links`.`link_id`

Du meinst sicher
SQL-Code:
SELECT * FROM `links` L INNER JOIN `kundendaten` D ON L.`link_id` = D.`link_id`

p80286 15. Sep 2010 16:26

AW: Datenbankabfrage dauert 13 Sekunden
 
Das wäre mir aber doch sehr neu, das ein JOIN schneller sein soll als ein where Tab1.id=tab2.id.

Wie groß ist denn ein Datensatz der hierdurch generiert wird?
Code:
SELECT * FROM `links`,`kundendaten`
Jedes Byte muß sich erst einmal über die Netzleitung quälen, und je mehr davon, desto langsamer!
Und was wird damit gemacht?
Die Anzeige von z.B. SQL+ ist so quälend langsam, daß jedes Ergebnis mit mehr als 1 Mb Größe zum Geduldsspiel wird. Da sind 13 Sekunden ein Klacks.

Gruß
K-H

youuu 15. Sep 2010 18:17

AW: Datenbankabfrage dauert 13 Sekunden
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1049837)
Wie groß ist die Datenbanktabelle?
Gibt es Indexe auf die Where-Felder?
Wie viel Speicher (RAM) darf sich der Server "genehmigen"
Virenscanner für die DB-Dateien deaktiviert?

Entschuldigung gerade rst vom Radtraining zurück.

Die Tabelle "links" besitzt ca. 200.000 Datensätze (steigend)
Die Tabell "Daten" (KundenDaten) besitzt ca. 60.000 Datensätze, ebenfalls steigend.
(kundendaten und data wr allerdings nur ein Abtipp Fehler ins Forum also keiner im Programm)

Indexe auf link_id beider Tabellen.


Kein Virenscanner für die DB und der Server besitzt 8GB Arbeitsspeicher, die zur vollen Verfügung stehen.

Delphi-Quellcode:
DSListe.Open;
verbraucht die vollen 13 Sekunden

youuu 15. Sep 2010 18:23

AW: Datenbankabfrage dauert 13 Sekunden
 
Zitat:

Zitat von p80286 (Beitrag 1049874)
Wie groß ist denn ein Datensatz der hierdurch generiert wird?
Code:
SELECT * FROM `links`,`kundendaten`


Enorm Zeit der Abfrage übersteigt die 2 Minuten, dann hab ich abgebrochen

DeddyH 15. Sep 2010 18:32

AW: Datenbankabfrage dauert 13 Sekunden
 
Wie ist es so (ich habe allerdings keine Ahnung, was date1 und date2 sind)?
SQL-Code:
SELECT
  * 
FROM
  `links` L
JOIN
  `kundendaten` D ON D.link_id = L.link_id
WHERE
  L.aufrufe <= 2
  AND L.eintrag <> 'delete'
  AND L.date IN(date1,date2)

youuu 15. Sep 2010 18:33

AW: Datenbankabfrage dauert 13 Sekunden
 
Ich habe jetzt die beiden anderen Felder auch indiziert in der mysql Tabelle und die Abfrage ist auf 3 Sek geschrumpft, normal oder immernoch zu hoch?

youuu 15. Sep 2010 18:36

AW: Datenbankabfrage dauert 13 Sekunden
 
Delphi-Quellcode:
 AND L.date IN(date1,date2)
nun brauch die Abfrage nur noch 1,24 Sekunden.
Super, Danke

DeddyH 15. Sep 2010 18:38

AW: Datenbankabfrage dauert 13 Sekunden
 
Brauchst Du wirklich alle Felder aus beiden Tabellen? Ich denke, eine Einschränkung auf die wirklich benötigten könnte auch noch etwas bringen.

youuu 15. Sep 2010 18:45

AW: Datenbankabfrage dauert 13 Sekunden
 
werde ich gleich versuchen

wicht 15. Sep 2010 18:53

AW: Datenbankabfrage dauert 13 Sekunden
 
Jau, ich hoffe mal ganz stark, dass das was noch etwas herausholt. Weil ein "Select *" heißt bei uns in der Firma einige Euros ins Abteilungs-Sparschwein...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz