Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Datenbanken erstellen » Mit Datenbankobjekten arbeiten » Mit materialisierten Ansichten arbeiten

 

Einschränkungen bei materialisierten Ansichten

Die folgenden Einschränkungen gelten bei der Erstellung, der Initialisierung, der Aktualisierung und der Ansichtenübereinstimmung von materialisierten Ansichten:

  • Wenn Sie eine materialisierte Ansicht erstellen, muss die Definition der materialisierten Ansicht die Spaltennamen ausdrücklich definieren. Sie dürfen kein SELECT * als Teil der Spaltendefinition verwenden.

  • Wenn Sie eine materialisierte Ansicht erstellen, darf die Definition der materialisierten Ansicht Folgendes nicht enthalten:

    • Referenzen zu anderen Ansichten (materialisierte oder nicht materialisierte)

    • Referenzen zu entfernten oder temporären Tabellen

    • Variable wie CURRENT USER; alle Ausdrücke müssen deterministisch sein

    • Aufrufe von gespeicherten Prozeduren, benutzerdefinierten Funktionen oder externen Funktionen

    • T-SQL-Outer-Joins

    • FOR XML-Klauseln

  • Die folgenden Datenbankoptionen müssen die angegebenen Einstellungen haben, wenn eine materialisierte Ansicht erstellt wird. Andernfalls wird ein Fehler gemeldet. Diese Einstellungen der Datenbankoptionen sind außerdem erforderlich, damit die Ansicht vom Optimierer benutzt werden kann:

    • ansinull=On
    • conversion_error=On
    • sort_collation=Null
    • string_rtruncation=On
  • Die folgenden Einstellungen der Datenbankoptionen werden für jede materialisierte Ansicht gespeichert, wenn sie erstellt wird. Die aktuellen Optionseinstellungen für die Verbindung müssen den Werten entsprechen, die für eine materialisierte Ansicht gespeichert wurden, damit die Ansicht bei der Optimierung verwendet werden kann:

    • date_format
    • date_order
    • default_timestamp_increment
    • first_day_of_week
    • nearest_century
    • precision
    • scale
    • time_format
    • timestamp_format
  • Wenn eine Ansicht aktualisiert wird, werden alle oben in der Liste angeführten Verbindungseinstellungen ignoriert. Stattdessen werden die Einstellungen der Datenbankoptionen (die mit den gespeicherten Einstellungen für die Ansicht übereinstimmen müssen) verwendet.

ORDER BY-Klausel in der Definition einer materialisierten Ansicht angeben

Materialisierte Ansichten ähneln Basistabellen insofern, als die Zeilen nicht in einer bestimmten Reihenfolge gespeichert werden. Der Datenbankserver ordnet die Zeilen auf die effizienteste Art an, wenn er die Daten berechnet. Die Verwendung einer ORDER BY-Klausel in einer materialisierten Ansicht hat daher keine garantierte Auswirkung auf die Reihenfolge der Zeilen, wenn die Ansicht materialisiert wird. Außerdem wird die ORDER BY-Klausel in der Ansichtsdefinition vom Optimierer ignoriert, wenn die Ansichtenübereinstimmung durchgeführt wird.

Informationen zu materialisierten Ansichten und zur Ansichtenübereinstimmung durch den Optimierer finden Sie unter Performance durch materialisierte Ansichten verbessern.

Zusätzliche Einschränkungen für Sofortansichten

Es gelten die folgenden Einschränkungen, wenn eine manuelle Ansicht in eine Sofortansicht geändert wird. Es wird ein Fehler gemeldet, wenn die Ansicht eine dieser Einschränkungen verletzt:

Hinweis

Sie können die Systemprozedur sa_materialized_view_can_be_immediate verwenden um herauszufinden, ob eine manuelle Ansicht in Frage kommt, in eine Sofortansicht geändert zu werden. Weitere Hinweise finden Sie unter sa_materialized_view_can_be_immediate-Systemprozedur.

  • Die Ansicht muss nicht-initialisiert sein. Weitere Hinweise finden Sie unter Status und Eigenschaften von materialisierten Ansichten.

  • Die Ansicht muss einen eindeutigen Index auf nicht-nullwertfähigen Spalten haben. Wenn das nicht der Fall ist, müssen Sie einen hinzufügen. Weitere Hinweise finden Sie unter Indizes erstellen.

  • Wenn die Ansichtsdefinition eine gruppierte Abfrage ist, müssen die Spalten des eindeutigen Indexes den Auswahllisteneinträgen entsprechen, die keine Aggregatfunktionen sind.

  • Die Ansichtsdefinition darf nicht enthalten:

    • SUM-Funktion über einen nullwertfähigen Ausdruck
    • GROUPING SETS-Klauseln
    • CUBE-Klauseln
    • ROLLUP-Klauseln
    • LEFT OUTER JOIN-Klauseln
    • RIGHT OUTER JOIN-Klauseln
    • FULL OUTER JOIN-Klauseln
    • DISTINCT-Klauseln
    • Zeilenlimit-Klauseln
    • Nicht-deterministische Ausdrücke
    • Self- und Recursive-Joins
  • Die Ansichtsdefinition muss ein einzelner "select-project-join"- oder ein "grouped-select-project-join"-Abfrageblock sein, und der "grouped-select-project-join"-Abfrageblock darf keine HAVING-Klausel enthalten.

  • Der "grouped-select-project-join"-Abfrageblock muss COUNT(*) in der Auswahlliste enthalten, und als Aggregatfunktionen sind nur SUM und COUNT erlaubt.

    Eine Beschreibung dieser Strukturen finden Sie unter Prüfung materialisierter Ansichten.

  • Eine Aggregatfunktion in der Auswahlliste kann nicht in einem komplexen Ausdruck referenziert werden. Beispielsweise ist SUM(expression) + 1 in der Auswahlliste nicht zulässig.