Warum sollten wir optimieren
Der Durchsatzengpass des Systems zeigt sich oft in der Zugriffsgeschwindigkeit der Datenbank, Das heißt, während die Anwendung ausgeführt wird, befinden sich immer mehr Daten in der Datenbank und die Verarbeitungszeit verlangsamt sich entsprechend. Darüber hinaus werden die Daten auf der Festplatte gespeichert und die Lese- und Schreibgeschwindigkeit ist nicht vergleichbar das des Speichers.
Wie wäre es mit der Optimierung
1. Beim Entwurf der Datenbank: Entwurf von Datenbanktabellen und -feldern, Speicher-Engine
2. Nutzen Sie die von MySQL selbst bereitgestellten Funktionen wie Indizes und Optimierung des Anweisungsschreibens
3. MySQL-Cluster, Unterdatenbank und Untertabelle, Lese-/Schreibtrennung
Das Internet hat viel Erfahrung in der Optimierung von SQL-Anweisungen, daher legt dieser Artikel diese beiseite und versucht, die DAO-Schicht und die Optimierung des Datenbankdesigns zu optimieren und zwei einfache Beispiele aufzulisten
Beispiel 1: ERP Abfrageoptimierung
Aktuelle Situationsanalyse:
1. Fehlende zugehörige Indizes
2. MySQL selbst hat eine begrenzte Leistung und unterstützt die Zuordnung mehrerer Tabellen nicht gut . Die aktuelle Leistung konzentriert sich hauptsächlich auf Listenabfragen, die viele Tabellen verknüpfen
Gegenmaßnahmen:
1 Erforderliche Indizes hinzufügen: Zeigen Sie die Ausführungsdatensätze über EXPLAIN an und fügen Sie Indizes entsprechend hinzu Ausführungsplan;
2 Zählen Sie zuerst die Primärschlüssel der Haupttabelle der Geschäftsdaten, erhalten Sie eine kleinere Ergebnismenge und verwenden Sie dann die mit der Ergebnismenge verknüpfte Abfrage.
1) Fragen Sie zuerst den Primärschlüssel ab und zeigen Sie ihn an Geschäftsdaten basierend auf der Haupttabelle und den Bedingungen
2) Verwenden Sie den Primärschlüssel als Abfragebedingung und verknüpfen Sie dann andere verwandte Tabellen, um die erforderlichen Geschäftsfelder abzufragen
3 ) Beim Abfragen der Haupttabelle für Abfragebedingungen das mit anderen Tabellen verknüpft werden müssen, müssen Sie die Tabellenzuordnung nur dann einrichten, wenn Sie diese Bedingung festlegen
例如 有如下表 TT_A TT_B TT_C TT_D 假设未优化前的SQL是这样的 SELECT A.ID, .... B.NAME, ..... C.AGE, .... D.SEX ..... FROM TT_A A LEFT JOIN TT_B B ON A.ID = B.ITEM_ID LEFT JOIN TT_C C ON B.ID = C.ITEM_ID LEFT JOIN TT_D D ON C.ID = D.ITEM_ID WHERE 1=1AND A.XX = ?AND A.VV = ?..... 那么优化后的SQL是 第一步 SELECT A.ID FROM TT_A A WHERE 1=1AND A.XX = ?AND A.VV = ?第二步 SELECT A.ID, .... B.NAME, ..... C.AGE, .... D.SEX ..... FROM ( SELECT A.ID,..... FROM TT_A WHERE ID IN (1,2,3..) ) A LEFT JOIN TT_B B ON A.ID = B.ITEM_ID LEFT JOIN TT_C C ON B.ID = C.ITEM_ID LEFT JOIN TT_D D ON C.ID = D.ITEM_ID WHERE 1=1AND A.XX = ?AND A.VV = ?
Zusammenfassung:
Diese Art der Optimierung ist Geeignet für Listenabfragen, da die Bedingungen einer Listenabfrage im Allgemeinen mit der Haupttabelle verknüpft sind. Verwenden Sie diese Funktion daher zum Erstellen von Schlüsselfeldindizes und reduzieren Sie gleichzeitig die Haupttabelle durch die Einschränkung der Abfragebedingungen erheblich. Auf diese Weise können andere Tabellen viel schneller verknüpft werden
Beispiel 2: Optimierung der Artikelsuche
Angenommen, Sie möchten eine Artikelsuchfunktion für Tieba erstellen Der einfachste und direkteste Weg Die Speicherstruktur besteht darin, eine relationale Datenbank zu verwenden, um eine solche relationale Datenbanktabelle TT_ARTICLES zum Speichern von Artikeln zu erstellen:
Wenn dann das aktuelle Suchschlüsselwort „ target“, können wir den String-Matching verwenden, um passende Abfragen für die Spalte CONTENT durchzuführen:
select * from ARTICLES where CONTENT like '% 目标 %';
Dadurch wird die Suchfunktion einfach implementiert. Dieser Ansatz weist jedoch offensichtliche Probleme auf, das heißt, die Verwendung von % für den Zeichenfolgenabgleich ist sehr ineffizient, sodass eine solche Abfrage die gesamte Tabelle durchlaufen muss (vollständiger Tabellenscan). Bei wenigen oder Dutzenden Artikeln ist das kein Problem, bei Hunderttausenden oder Millionen Artikeln ist diese Methode jedoch völlig undurchführbar. Ganz zu schweigen davon, dass eine einzelne relationale Datenbanktabelle nicht so große Datenmengen aufnehmen kann, der Zeitaufwand ist hier unvorstellbar, wenn sie gescannt werden muss
Also müssen wir „einführen“. Inversion"-"Indizierungs"-Technologie. Im oben beschriebenen Szenario können wir dieses Konzept zur Erläuterung in zwei Teile aufteilen: Okay, die obige ARTICLES-Tabelle existiert noch, aber jetzt muss eine Schlüsselworttabelle KEYWORDS hinzugefügt werden und die KEYWORD-Spalte muss daher indiziert werden Dieses Schlüsselwort kann schnell gefunden werden:
Natürlich benötigen wir auch eine Beziehungstabelle, um die KEYWORDS-Tabelle und die ARTICLES-Tabelle, KEYWORD_ID und ARTICLE_ID als Unions-Primärschlüssel
Zusammenfassung:
Dies scheint drei Suchvorgänge zu sein, aber da der Index jedes Mal verwendet wird, entfällt ein vollständiger Tabellenscan, wenn die Datenmenge gering ist , Die Geschwindigkeit ist nicht langsam und bei der Implementierung mit SQL kann dieser Prozess vollständig in eine SQL-Anweisung eingefügt werden. Wenn die Datenmenge klein ist, ist die obige Methode ausreichend. Dadurch werden die Leistungsprobleme gelöst, die durch vollständige Tabellenscans und String-%-Match-Abfragen verursacht werden.Zusammenfassung:
Wenn Sie während des technischen Interviews praktische Beispiele geben oder direkt über die Probleme und Vorteile in Ihrem Entwicklungsprozess sprechen können, wird der Interviewzweig verwendet Fügen Sie viel hinzu, und Ihre Antworten sollten logischer sein. Gehen Sie nicht hier und da vor, was Sie leicht verwirren kann. Wenn Sie beispielsweise gefragt werden, wie Sie SQL optimieren können, sollten Sie nicht direkt mit dem Hinzufügen von Indizes antworten. Sie können wie folgt antworten:Hallo Interviewer, zunächst einmal ist unser Projekt-DB-Datenvolumen auf einen Engpass gestoßen, der dazu führt, dass die Listenabfrage sehr langsam ist und den Benutzern ein schlechtes Erlebnis beschert. Um dieses Problem zu lösen, gibt es viele Methoden, wie zum Beispiel die meisten Grundlegendes Datenbanktabellendesign. Grundlegende SQL-Optimierung, MYSQL-Clustering, Lese-/Schreibtrennung, Unterdatenbanken und Untertabellen, Hinzufügen von Cache-Ebenen zur Architektur usw. Ihre Vor- und Nachteile ... Wir kombinieren diese und kombinieren sie dann mit dem Merkmale unseres Projekts Schließlich entscheiden wir bei der Auswahl der Technologie.
Wenn Sie die Fragen so geordnet und fundiert beantworten und auch über so viele Wissenspunkte außerhalb der Fragen sprechen, wird der Interviewer denken, dass Sie nicht nur eine Person sind, die Code schreiben kann, sondern dass Sie haben eine klare Logik. Sie haben Ihr eigenes Verständnis und Denken über die Technologieauswahl
Dieser Artikel stammt aus der Rubrik SQL-Tutorial, willkommen zum Lernen!
Das obige ist der detaillierte Inhalt vonWie optimiert man SQL-Abfragen? (ausführliche Erklärung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In praktischen Anwendungen wird SQL hauptsächlich für die Datenabfrage und -analyse, die Datenintegration und -berichterstattung, die Datenreinigung und -vorverarbeitung, die erweiterte Verwendung und Optimierung sowie die Umgang mit komplexen Abfragen sowie zur Vermeidung häufiger Fehler verwendet. 1) Datenabfrage und -analyse können verwendet werden, um das meiste Verkaufsprodukt zu finden. 2) Datenintegration und Berichterstattung generieren Kundenkaufberichte über Join Operations; 3) Datenreinigung und Vorverarbeitung können abnormale Altersaufzeichnungen löschen. 4) Erweiterte Verwendung und Optimierung umfassen die Verwendung von Fensterfunktionen und das Erstellen von Indizes; 5) CTE und Join können verwendet werden, um komplexe Abfragen zu behandeln, um häufige Fehler wie die SQL -Injektion zu vermeiden.

SQL ist eine Standardsprache für die Verwaltung von relationalen Datenbanken, während MySQL ein spezifisches Datenbankverwaltungssystem ist. SQL bietet eine einheitliche Syntax und eignet sich für eine Vielzahl von Datenbanken. MySQL ist leicht und Open Source mit einer stabilen Leistung, hat jedoch Engpässe in der Big -Data -Verarbeitung.

Die SQL -Lernkurve ist steil, kann aber durch Praxis und das Verständnis der Kernkonzepte gemeistert werden. 1. Grundlegende Vorgänge umfassen Auswahl, Einfügen, Aktualisieren, Löschen. 2. Die Ausführung von Abfragen ist in drei Schritte unterteilt: Analyse, Optimierung und Ausführung. 3. Die grundlegende Nutzung ist beispielsweise die Abfrage von Mitarbeiterninformationen, und die fortgeschrittene Nutzung wird beispielsweise die Verwendung von Join Connection -Tabelle verwendet. 4. Häufige Fehler sind nicht die Verwendung von Alias und SQL -Injektion, und es ist eine parametrisierte Abfrage erforderlich, um dies zu verhindern. 5. Die Leistungsoptimierung wird erreicht, indem die erforderlichen Spalten ausgewählt und die Code -Lesbarkeit aufrechterhalten wird.

SQL -Befehle sind in fünf Kategorien in MySQL: DQL, DDL, DML, DCL und TCL unterteilt und werden verwendet, um Datenbankdaten zu definieren, zu betreiben und zu steuern. MySQL verarbeitet SQL -Befehle durch lexikalische Analyse, Syntaxanalyse, Optimierung und Ausführung und verwendet Index- und Abfrageoptimierer, um die Leistung zu verbessern. Beispiele für die Nutzung sind Auswahl für Datenabfragen und Join für Multi-Table-Operationen. Zu den häufigen Fehlern gehören Syntax-, Logik- und Leistungsprobleme sowie Optimierungsstrategien umfassen die Verwendung von Indizes, Optimierung von Abfragen und die Auswahl der richtigen Speicher -Engine.

Zu den erweiterten Query -Fähigkeiten in SQL gehören Unterabfragen, Fensterfunktionen, CTEs und komplexe Verbindungen, die die Anforderungen an komplexe Datenanalysen erfüllen können. 1) Unterabfrage wird verwendet, um die Mitarbeiter mit dem höchsten Gehalt in jeder Abteilung zu finden. 2) Fensterfunktionen und CTE werden verwendet, um das Gehaltswachstumstrends der Mitarbeiter zu analysieren. 3) Leistungsoptimierungsstrategien umfassen Indexoptimierung, Umschreiben von Abfragen und die Verwendung von Partitionstabellen.

MySQL ist ein Open Source Relational Database Management -System, das Standard -SQL -Funktionen und -Ertendierungen bietet. 1) MySQL unterstützt Standard -SQL -Vorgänge wie Erstellen, Einfügen, Aktualisieren, Löschen und Erweiterungen der Grenzklausel. 2) Es werden Speichermotoren wie InnoDB und MyISAM verwendet, die für verschiedene Szenarien geeignet sind. 3) Benutzer können MySQL effizient über erweiterte Funktionen wie das Erstellen von Tabellen, das Einfügen von Daten und die Verwendung gespeicherter Prozeduren verwenden.

SQLmakesdatamanagementaccessibletoallbyprovidingasimpleyetpowerfultoolsetforqueryingandmanagingdatabases.1)Itworkswithrelationaldatabases,allowinguserstospecifywhattheywanttodowiththedata.2)SQL'sstrengthliesinfiltering,sorting,andjoiningdataacrosstab

SQL -Indizes können die Abfrageleistung durch cleveres Design erheblich verbessern. 1. Wählen Sie den entsprechenden Indextyp aus, z. B. B-Tree, Hash oder Volltextindex. 2. Verwenden Sie den zusammengesetzten Index, um die Multi-Feld-Abfrage zu optimieren. 3. Vermeiden Sie über-Index, um die Aufwand für die Datenwartung zu reduzieren. 4. Verwalten Sie die Indizes regelmäßig, einschließlich Wiederaufbau und Entfernen unnötiger Indizes.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version