Announcement

Collapse
No announcement yet.

View die Entscheidet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • View die Entscheidet

    Hallo,

    Ich habe eine View die wie folgt aussieht:
    Code:
    SELECT feld1, feld2, feld3, feld4 FROM tbl_eins
    UNION
    SELECT feld1, feld2, feld3, feld4 FROM tbl_zwei;
    Ich rufe die View wie folgt auf:
    Code:
    SELECT * FROM MyView WHERE feld1=2;
    Nun sind in der tbl_eins alle Datensätze mit feld1<100 und in tbl_zwei alle datensätze mit feld1>=100.

    Die View erstellt über eine Union also die gemeinsame Menge beider Tabellen, obwohl definitiv nur eine Tabelle das Ergebnis liefert.

    Gibt es eine möglichkeit, die View so zu gestalte, das abhängig ob ich nach werten <100 oder >100 suche, die eine oder die andere Tabelle abgefragt wird?

    Gruß
    Alfonso

  • #2
    Hi,

    also zum einen sortiert ein UNION schon mal und dampft doppelte Einträge ein. Das sollte eher an der Performance ziehen als ein Indexzugriff auf bestimmte Werte.

    Wenn Du deine Logik in die View hineinschreibst, kann Oracle das evtl. nutzen:
    Code:
    SELECT feld1, feld2, feld3, feld4 FROM tbl_eins WHERE feld1 <100
    UNION
    SELECT feld1, feld2, feld3, feld4 FROM tbl_zwei WHERE feld1 >=100;
    Falls möglich, solltest Du aber eher den UNION durch UNION ALL ersetzen, das bringt mehr.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment

    Working...
    X