AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Performance-Prob mit Subselect
Thema durchsuchen
Ansicht
Themen-Optionen

Performance-Prob mit Subselect

Ein Thema von hoika · begonnen am 21. Jan 2008 · letzter Beitrag vom 22. Jan 2008
Antwort Antwort
Seite 2 von 2     12   
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Performance-Prob mit Subselect

  Alt 21. Jan 2008, 18:26
Musst du so höchstwahrscheinlich auch. in einer SP kann man DBMS-spezifische Dinge oft besser "verstecken"
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Performance-Prob mit Subselect

  Alt 21. Jan 2008, 19:15
Hallo,

ja schon, aber ne SP muss man auch pflegen,
das geht bei Quellcode halt einfacher.


Heiko
Heiko
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: Performance-Prob mit Subselect

  Alt 22. Jan 2008, 07:54
hoika,

sehe ich das richtig, das die drei Tabellen jeweils nur 1000, 4000 und 160 Einträge haben? Dann darf das doch nicht so lange dauern. Das müsste doch im 100-500ms Bereich liegen, auf jeden Fall unter 1 Sekunde. FB ist doch nicht wirklich so lahm, oder?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#14

Re: Performance-Prob mit Subselect

  Alt 22. Jan 2008, 08:07
versuch mal folgendes:
SQL-Code:
Select Booking.booking_id,
       Booking.project_id
  From Booking
    Join Project On Project.project_id=Booking.project_id
    Join Pos On Pos.position_id=Booking.position_id
  where not exists (
                    select except_projects.project_id
                      from except_projects
                      where except_projects.project_id = booking.project_id
                   )
Das Konstrukt exists bzw. not exists ist oft deutlich schneller als das in /not in Konstrukt, da eine kleinere Ergebnismenge erstellt werden muss.

Gruß

onlinekater
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: Performance-Prob mit Subselect

  Alt 22. Jan 2008, 08:20
Hallo

> alzaimar
Die booking Tabelle enthält 300.000 Einträge.

> onlinekater
Die Not Exists Variante dauert hier länger als das Subselect (700 ms vs. 1100 ms),
der Zugriffs-Plan ist aber der gleiche.

Die Lösung mit dem left join klappt auch unter FB2.
Puh, doch keine SP benutzen
(der Code wird erweitert, ich brauche also viell. demnächst mehr Parameter,
da ist eine Query einfacher als ne SP).


Heiko
Heiko
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#16

Re: Performance-Prob mit Subselect

  Alt 22. Jan 2008, 08:32
Zitat von onlinekater:
versuch mal folgendes:
So gut wie identisch mit der langsamen Lösung von hoika.

hoika: Ich habe mir angewöhnt, Standardqueries (die also zum Grundrepertoire der Anwendung gehören) in Views oder UDF zu packen. Man hat eine Abstraktionsschicht, die zudem noch eine Performancesteigerung bringt.

Du hast hier z.B. eine Sicht auf Positionen und Projekte, die nicht in der Except-Liste stehen. Das würde ich in eine View packen. WEnn FB hier schwächelt, dann eben in eine UDF oder SP. Nun sieht die Anwendung nur die View, SP oder UDF und erwartet einen bestimmten Output. Wie die Tabellen auf der DBMS-Seite konkret aussehen, ist egal und kann im Notfall auch nachträglich verändert werden.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#17

Re: Performance-Prob mit Subselect

  Alt 22. Jan 2008, 10:40
Hallo,

schon klar, dass mit SP oder View, aber:

so muss ich nur das Programm warten,
bei einer SP (deren Parameter sich vielleicht auch noch ändern),
ist das sehr viel mehr Aufwand.

Bisher benutze ich SP's nur, wenn es unbedingt notwendig ist (Performance).


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 02:18 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