![]() |
Re: SQL-Abfrage dauert zu lange
Sogar Oracle setzt bei sowas einen Full Table Scan an, wenn das Ergebnis noch in der Art wie oben angegeben verjoint wird. Egal, ob da ein Index sitzt oder nicht. Bei so einem geschachtelten Statement setzt früher oder später jede Ablaufplanoptimierung aus, egal wie gut sie ist.
|
Re: SQL-Abfrage dauert zu lange
hallo
ich denke es kommt auf die Anzahl der Datensätze an. du kannst es ja mal mit den ODBC Treiber für Mysql probieren, vielleicht sind die schneller |
Re: SQL-Abfrage dauert zu lange
"OR" Verknüpfungen in Abfragen sind immer schlecht...
Arbeite lieber mir UNION ALL, das dürfte schonmal schneller sein:
SQL-Code:
Leg einen Index über (kv.kundennummer, kv.datum) und jeweils einen über die Vorgangsnummer der anderen Tabellen.
SELECT kv.*, kr.ID as id_rechnungen, null as id_gutschriften, null as id_lieferscheine
FROM kasse_vorgaenge kv LEFT JOIN kasse_rechnungen kr ON kv.ID = kr.vorgangsnummer WHERE kv.kundennummer = 1 AND kv.datum BETWEEN '2006-05-01' AND '2006-11-28' UNION ALL SELECT kv.*, null as id_rechnungen, kg.ID as id_gutschriften, null as id_lieferscheine FROM kasse_vorgaenge kv LEFT JOIN kasse_gutschriften kg ON kv.ID = kg.vorgangsnummer WHERE kv.kundennummer = 1 AND kv.datum BETWEEN '2006-05-01' AND '2006-11-28' UNION ALL SELECT kv.*, null as id_rechnungen, null as id_gutschriften, kl.ID as id_lieferscheine FROM kasse_vorgaenge kv LEFT JOIN kasse_lieferscheine kl ON kv.ID = kl.vorgangsnummer WHERE kv.kundennummer = 1 AND kv.datum BETWEEN '2006-05-01' AND '2006-11-28' Gruß Andi |
Re: SQL-Abfrage dauert zu lange
Zitat:
Phoenix, wie kommst Du darauf, das 'selbst Oracle' einen FTS macht... :gruebel: |
Re: SQL-Abfrage dauert zu lange
Zitat:
SQL-Code:
? Erkläre mal wie man das optimieren kann. :mrgreen:
select * from table where name like '%test%'
|
Re: SQL-Abfrage dauert zu lange
Hansa, da 'setzt' der Optimierer nicht aus, sondern macht das Beste draus. Kleiner, feiner Unterschied. :mrgreen: Und falls eine Volltextsuche eingeschaltet ist, kann hier auch der dümmste Optimierer optimieren.
|
Re: SQL-Abfrage dauert zu lange
Moin Hansa,
das ist einfach: Einen Index auf das Feld legen und aus dem table scan wird ein index scan. Da geht die Post ab - besonders, wenn die index pages auch noch komplett im memory pool des DBMS gehalten werden. Und wenn du das richtige RDBMS verwendest, dann musst du den Index noch nicht mal selbst erzeugen. Freundliche Grüße |
Re: SQL-Abfrage dauert zu lange
Zitat:
:shock: Welches RDBMS kann das denn? Welches RDBMS wagt es, meine Indexstrategie zu unterminieren? :zwinker: Her damit! Grüße. |
Re: SQL-Abfrage dauert zu lange
Zitat:
![]() Und das war auch ungefähr das, was ich gemeint hatte. Man könnte ja nun einige Spalten manuell indizieren. Aber die Vorteile werden eben durch Konstrukte wie LIKE %BLUBB% mehr oder weniger zunichte gemacht. |
Re: SQL-Abfrage dauert zu lange
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 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