![]() |
AW: SQL viel zu langsam
[OT]
Hatte mir das Freitag zufällig mal reingezogen, weil dazu eine Mail von Emba kam. Fand es eigentlich ganz interessant, da es (zwar bezogen auf Oracle) einige Hinweise gibt, wie man die Performance seiner Abfragen verbessern kann. ![]() [/OT] |
AW: SQL viel zu langsam
Du benötigst einen Index auf Itemid und Transcode. Auf alle 4 und auf die einzelnen hilft ja nichts.
|
AW: SQL viel zu langsam
Zitat:
Fertig nach 11 Minuten Plan PLAN SORT (JOIN (ED1 INDEX (ENSAMBLED_IDX_TRANSCODE), ED2 INDEX (ENSAMBLED_IDX1_ITEMID_TC))) ENSAMBLED_IDX1_ITEMID_TC = Index auf ItemID und Transcode zusammen. |
AW: SQL viel zu langsam
Dann könnte man noch so vorgehen:
Code:
Nun sind vielleicht weniger Kandidaten zum prüfen auf not exists...
select * from (
SELECT DISTINCT ED1.Item, ED1.Location, ED1.ItemID FROM EnsambleD ED1 WHERE ED1.TransCode = 'S' ) x where not exists ( SELECT DISTINCT ED2.Itemid FROM EnsambleD ED2 WHERE ED2.Itemid=x.Itemid AND ED2.TransCode='EI') ) |
AW: SQL viel zu langsam
@DejaVu
Das query braucht 10m14s Das originale von ganz am Anfang mit dem NOT EXISTS braucht 10m08s Um Längen besser als die 2h von vorher. Danke, mkinzler und alle anderen... |
AW: SQL viel zu langsam
Zitat:
|
AW: SQL viel zu langsam
Definitiv. Werd es wohl ncohmal neu schreiben, aber in Delphi... da brauch ich unter 10 Sekunden für diese Liste.
|
AW: SQL viel zu langsam
Zitat:
SQL-Code:
SELECT DISTINCT Item, Location, ItemID
FROM EnsambleD WHERE TransCode='S ' AND NOT EXISTS (SELECT True FROM EnsambleD AS ED2 WHERE ED2.Itemid=EnsambleD.Itemid AND ED2.TransCode='EI' LIMIT 1) |
AW: SQL viel zu langsam
Du meinst, wegen dem 'DISTINCT'?
Laut einschlägigen Foren ist folgendes Äquivalent (wobei man FB nie wissen kann) ... where exists (select 1 from foobar) -- ... where exists (select * from foobar) weil ja nicht die Ergebnismenge erzeugt wird, sondern beim ersten Treffer TRUE geliefert wird. |
AW: SQL viel zu langsam
Zitat:
Also Diesbezüglich soll der also intelligent genug sein. Wenn erst die komplette Liste erzeugt und danach erst das EXISTS ausgewertet würde, dann wäre das ja unnütze Arbeit. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 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