Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum verursacht eine Ansicht deutlich höhere Kosten als die Ausführung derselben Abfrage für eine zugrunde liegende Tabelle?

Patricia Arquette
Freigeben: 2024-10-24 00:26:29
Original
597 Leute haben es durchsucht

Why Does a View Show Significantly Higher Cost Than Executing Same Query on an Underlying Table?

MySQL View-Leistungsprobleme

Problem:

Ein Benutzer hat eine Abfrage für eine Tabelle mit 100.000 Zeilen, was einen hohen Aufwand (5200) beim Filtern nach einem bestimmten Status anzeigt. Das Erstellen einer Ansicht mit derselben aggregierten Abfrage und das Filtern der Ansicht führt zu deutlich höheren Kosten (100.000).

Erklärung:

Die Kostendiskrepanz ist darauf zurückzuführen Der verwendete Ansichtsalgorithmus. Der Standardalgorithmus für Ansichten ist temptable, der alle Zeilen aus der zugrunde liegenden Tabelle abruft und dann den Filter anwendet. Dies kann zu einer schlechten Leistung führen, wenn die Filterung auf einem kleinen Prozentsatz von Zeilen basiert.

Lösung:

Um dieses Problem zu beheben, sollte die Ansicht mit definiert werden merge-Algorithmus, der die Verwendung von Indizes für die zugrunde liegende Tabelle ermöglicht und die Filtereffizienz verbessert. Dies kann mit der folgenden Syntax erfolgen:

<code class="sql">CREATE OR REPLACE VIEW vw_users AS
SELECT state, COUNT(*) AS cnt
FROM users
WITH MERGE VIEW;</code>
Nach dem Login kopieren

Mit dem Zusammenführungsalgorithmus kann die Abfrage der Ansicht nun den Index der Statusspalte nutzen, wodurch die Kosten gesenkt und die Leistung verbessert werden.

Das obige ist der detaillierte Inhalt vonWarum verursacht eine Ansicht deutlich höhere Kosten als die Ausführung derselben Abfrage für eine zugrunde liegende Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!