AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MySql Abfragezeit

Ein Thema von youuu · begonnen am 11. Jul 2011 · letzter Beitrag vom 11. Jul 2011
Antwort Antwort
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#1

MySql Abfragezeit

  Alt 11. Jul 2011, 08:10
Datenbank: MySql • Version: 5 • Zugriff über: Devart
Hi,

ich habe solch eine Abfrage

Delphi-Quellcode:
Query.SQL.Text := 'Select K.kd, K.aufrufe, K.EintragsD, K.link, K.Link_id, K.firmenname, K.AufrufD, K.bearbeiter '+
                        'FROM '+DB_1+' AS K '+
                        'WHERE not exists ( select link_id FROM '+DB_2+' WHERE (link_id = K.link_id) AND (bearbeiter LIKE :bearbeiter) ) '+
                        'ORDER BY RAND()';
die Tabelle "DB_1" hat insgesamt 12.000 Ergebisse und die Tabelle "DB_2" ca. 2.000 und steigend. Indizes sind gesetzt, dennoch dauert die Abfrage 40 Sekunden.

Hat jemand einen Geschwindigkeits Boost?
Steven
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#2

AW: MySql Abfragezeit

  Alt 11. Jul 2011, 08:17
'ORDER BY RAND()' ist auch nicht schlecht. Performanceoptimierend wirkt sich das nicht aus.

Und dann würde ich es mal mit einem LEFT JOIN probieren, also
SQL-Code:
select *
  from DB_1 k
    left join DB_2 x on k.link_ID = x.link_ID and bearbeiter like :bearbeiter
where x.link_ID is null
Ich muss zugeben, bei LEFT JOINS die Datensätze zu filtern, die gerade *nicht* passen, ist nicht so einfach. ich glaub aber, so sollte es klappen. Vielleicht musst Du die Bearbeiter-Klausel ins WHERE verschieben.
Das Bild hängt schief.
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#3

AW: MySql Abfragezeit

  Alt 11. Jul 2011, 08:24
Das ORDER BY RAND() nicht Perfomance unterstützend ist weiß ich, ich brauch aber die Ergebnisse ungeordnet.

Durch diese Abfrage wird leider der Query auch nicht schneller
Steven
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

AW: MySql Abfragezeit

  Alt 11. Jul 2011, 08:58
ich brauch aber die Ergebnisse ungeordnet.
Dann gib einfach nicht an, dass du was sortiert haben willst. MySQL-Datenbanken sind bei intensiver Benutzung alles andere als sortiert.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#5

AW: MySql Abfragezeit

  Alt 11. Jul 2011, 09:04
Wenn ich es weglasse wären es 10 Sek ersparnis, das heißt es benötigt immer noch 30 - 35 Sekunden. Was ich finde doch argh lang ist.
Steven
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#6

AW: MySql Abfragezeit

  Alt 11. Jul 2011, 09:08
SQL-Code:
Select K.kd, K.aufrufe, K.EintragsD, K.link, K.Link_id, K.firmenname, K.AufrufD, K.bearbeiter
FROM DB_1 AS K
WHERE k.link_id not in (select x.link_id FROM DB_2 AS x WHERE (x.bearbeiter LIKE :bearbeiter))
Das wäre noch ein Versuch wert.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: MySql Abfragezeit

  Alt 11. Jul 2011, 09:09
Muss es wirklich LIKE sein? Wenn der entsprechende Wert auch noch mit einer Wildcard beginnt, dann kann kein Index mehr greifen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#8

AW: MySql Abfragezeit

  Alt 11. Jul 2011, 09:13
Ohje tatsache ohne Like mit wildcard hab ich ganze 20 Sekunden gespart
Steven
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 Uhr.
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