![]() |
Datenbank: MySql • Version: 5 • Zugriff über: Devart
MySql Abfragezeit
Hi,
ich habe solch eine Abfrage
Delphi-Quellcode:
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.
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()'; Hat jemand einen Geschwindigkeits Boost? |
AW: MySql Abfragezeit
'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:
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.
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 |
AW: MySql Abfragezeit
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 |
AW: MySql Abfragezeit
Zitat:
Bernhard |
AW: MySql Abfragezeit
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.
|
AW: MySql Abfragezeit
SQL-Code:
Das wäre noch ein Versuch wert.
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)) Bernhard |
AW: MySql Abfragezeit
Muss es wirklich LIKE sein? Wenn der entsprechende Wert auch noch mit einer Wildcard beginnt, dann kann kein Index mehr greifen.
|
AW: MySql Abfragezeit
Ohje tatsache ohne Like mit wildcard hab ich ganze 20 Sekunden gespart
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz