Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Function oder View (https://www.delphipraxis.net/159541-function-oder-view.html)

p80286 1. Apr 2011 10:29

Datenbank: Oracle • Version: 9 • Zugriff über: egal

Function oder View
 
Hallo zusammen,

ich hätte da mal eine prinzipelle Frage.
Meine Daten sind in "Familien" organisiert, D.h. zu einem Familiensatz gehören mind 1 und bis zu 300 "Kinderdatensätze".
Diese "Kinderdatensätze" sind mit "Ereignissen" verlinkt.
Jedes Ereignis kann zwei Datumsangaben enthalten "Frist" und "Erledigt".
Open : Frist:null Erledigt:Tagesdatum der Eingabe
Expire : Frist:Datum max. Laufzeit Erledigt:Datum Erreichung der max.Laufzeit.
Closed : Frist:null Erledigt:Tagesdatum der Eingabe

Jeder Datensatz enthält das Open-Ereignis und kann Expire und/oder closed enthalten.

Im Prinzip sieht die notwendige Abfrage so aus:
select FamKey from Family where not exists(Open) and (Expiry is null or Expiry>Today)

Meine Frage ist, was ist performanter, eine Funktion LebtdieseFamile(famkey) oder ein View der die Famkeys der lebenden Familien enthält.

Gruß
K-H

shmia 1. Apr 2011 11:01

AW: Function oder View
 
Kommt drauf an, was du brauchst.
Wenn du den Status aller "Familien" brauchst, ist der View insgesamt schneller, weil er auf einen Rutsch alles liefert.
Allerdings braucht der View wohl mehr Zeit, bis er Daten liefert.

Eine Funktion oder Stored Procedure ist für sich genommen schneller; wenn du aber in einer Schleife alle Familien abrufst wird insgesamt mehr Zeit benötigt als beim View.

jobo 1. Apr 2011 11:05

AW: Function oder View
 
Im Prinzip sehen deine beiden Datumsfelder nach einem Lifecycle aus. Die Logik hab ich allerdings nicht ganz verstanden. Egal.

Wenn du in einer extra Tabelle einen Set von Datensätzen der Familien verwaltest ist das sicher am schnellsten (ordentliche Indizierung usw . vorausgesetzt). Du handelst Dir damit allerdings eine Redundanz ein, die Du per Constraints / Trigger gut überwachen musst.

Ein einfaches decode auf die beiden Datumsfelder sollte den "Zustand" auch ausspucken, uim Einzelzugriff wär das auch total unproblematisch. Wenn Du diese Daten in Reports / Queries massenhaft abfragst, dann dauert es halt etwas. Kann aber auch nicht tragisch sein.

p.S: Ich glaub ich das
Zitat:

..oder ein View der die Famkeys der lebenden Familien enthält...
falsch verstanden.
Du willst nur wissen, ob View mit den Kriterien aus Deinem Beispiel oder Funktion?

p80286 1. Apr 2011 12:25

AW: Function oder View
 
Zitat:

Zitat von shmia (Beitrag 1092390)
Kommt drauf an, was du brauchst.
Wenn du den Status aller "Familien" brauchst, ist der View insgesamt schneller, weil er auf einen Rutsch alles liefert.
Allerdings braucht der View wohl mehr Zeit, bis er Daten liefert.

Eine Funktion oder Stored Procedure ist für sich genommen schneller; wenn du aber in einer Schleife alle Familien abrufst wird insgesamt mehr Zeit benötigt als beim View.

Das habe ich befürchtet, sowohl als auch!
Dann setzt ich beides ein, den View für die Massenabfrage und die Funktion für die Überprüfung einzelner Familien.
Vielen Dank und ein schönes Wochenende.

K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:04 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