Ich möchte wissen, was der Unterschied zwischen einer Abfrage und einer Ansicht in Bezug auf die Leistung ist. Und wenn eine Ansicht kostspielig ist, was könnte ich außer einer Abfrage noch tun, um die Leistung zu verbessern?
Antworten
Zu viele Anzeigen?Eine Ansicht ist für den Computer kaum teurer als das handschriftliche Ausfüllen der Abfrage. Ein View kann dem Programmierer/Benutzer eine Menge Zeit ersparen, wenn er dieselbe Abfrage immer wieder schreibt und sich dabei vertut, usw. Der View kann auch die einzige Möglichkeit sein, auf die Daten zuzugreifen, wenn Views auch zur Durchsetzung von Berechtigungen (Zugriffskontrolle) auf die zugrunde liegenden Tabellen verwendet werden.
Wenn die Abfrage nicht gut funktioniert, müssen Sie überprüfen, wie die Abfrage aufgebaut ist und ob die Tabellen alle über die entsprechenden Indizes verfügen. Wenn Ihr System für eine gute Leistung des Optimierers genaue Statistiken benötigt, haben Sie diese Statistiken in letzter Zeit ausreichend aktualisiert?
Vor langer Zeit stieß ich einmal auf ein System, in dem ein Abfragegenerator eine Abfrage erstellt hatte, die siebzehn Tabellen in einer einzigen FROM-Klausel auflistete, einschließlich mehrerer LEFT OUTER JOIN einer Tabelle mit sich selbst. Bei näherer Betrachtung stellte sich heraus, dass es sich bei mehreren der "Tabellen" tatsächlich um Multi-Tabellen-Ansichten handelte, von denen einige auch Self-Outer-Joins enthielten und selbst an Self-Outer-Joins der Ansicht beteiligt waren. Zu sagen " . " ist eine Untertreibung. Es gab eine Menge Bereinigungsmöglichkeiten, um die Leistung dieser Abfrage zu verbessern - Beseitigung unnötiger Outer-Joins, Self-Joins usw. (Die Abfrage war sogar älter als die explizite Join-Notation von SQL-92 - wie gesagt, vor langer Zeit -, so dass die Syntax für den äußeren Join DBMS-spezifisch war).
- See previous answers
- Weitere Antworten anzeigen