Veröffentlicht: von

Wann sind Views änderbar?

  1. Die zurückliegenden Constraints (z.B. not null) müssen erfüllt sein, d.h. z.B. alle not null Spalten in der View enthalten sein und auch der Primary Key. Das gilt nicht für die zugrunde liegenden Where-Klausel, d.h.Daten, die der Where-Klausel der view nicht entsprechen, sind zwar nach einem insert in die View nicht in der View  selber sichtbar, aber in der zugrunde liegenden Tabelle.
  2. Die View darf weder ein GROUP BY, noch ein DISTINCT noch einen Subselect enthalten.
  3. Die View darf keine hierarchische Abfrage (connect-by) enthalten
  4. Die View darf keinen ALias oder eine konkatenierte Spalte enthalten.
  5. siehe auch Carski
  6. Wenn eine View den Status ‚INVALID‘ hat, kann sie mit ALTER VIEW … COMPILE; wieder übersetzt werden.
  7. Spalten in views, die durch eine Funktion berechnet werden, müssen mit einem Spaltennamen versehen werden.: CREATE VIEW TEST as SELECT to_CHAR(XYZ) Spaltename  FROM Tabelle; der Spaltenname ist obligatorisch.

CONSTRAINTS und Synonyme

  1. Wenn man eine Tabelle löscht, werden alle CONSTRAINTS und Indizes, die an der Tabelle hängen gelöscht. Die Views und Synonyme dagegen bleiben erhalten und werden nur in der Data Dictionary-View user_objects mit dem Status ‚INVALID‘ gekennzeichnet.
  2. Zu den Synonymen gibt es schon einen edb-Onlien-Lexikon-Eintrag:Synonyme im Datenbankwiki.. Dort werden auch die verschiedenen Namensräume unter Oracle beschrieben.

Indexe und deren Gebrauch

  1. Ein Index wird genutzt, wenn die Spalte in einer WHERE-Klausel oder einer ORDER-BY-Klausel auftaucht.
  2. Am schnellsten ist ein Zugriff über „=“, größer als, kleiner funktioniert (in Abhängigkeit von den Daten) nicht immer, <> kann durch den Index nie ausgewertet werden.
  3. LIKE involviert den Index im allgemeinen :-(, wenn der Like-Ausdruck nicht mit einem Wildcard  LIKE  ‚%muster ‚  beginnt.
  4. Eine Funktion wie abs(spalte) setzt den Index außer Kraft, es sein denn, es existiert ein funktionsbasierter INDEX z.B. : CREATE INDEX name on UPPER(spalte);
  5. Seit Oracle 9 gibt es ein automatisches SKIP SCANNING, das dafür sorgt, dass bei einem zusammengesetzten Index (combined Index) mit mehr als einer Spalte der Index auch genutzt wird, wenn die erste Spalte in der WHERE-Klausel nicht enthalten ist. Das SKIP SCANNING ist immer automatisch eingeschaltet. (siehe: SKIP Scannning )
  6. Ein UNIQE INDEX ignoriert NULL -Werte, d. h. eine Spalte, auf der ein UNIQUE INDEX liegt, darf NULL-Werte haben.