Es gibt ein Unternehmen, das die 5 zuletzt überprüften Daten abfragt. Wählen Sie `id`, `title` VON `th_content` WO `audit_time` < 1541984478 UND `status` = 'ONLINE' ORDER BY `audit_time` DESC, `id` DESC GRENZE 5; Beim Überprüfen des Überwachungsstatus zu diesem Zeitpunkt lag die CPU-Auslastung bei über 100 %. Sehen Sie sich die Struktur der Tabelle an CREATE TABLE `th_content` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(500) CHARACTER SET utf8 NOT NULL DEFAULT '' KOMMENTAR 'Inhaltstitel', `content` mediumtext CHARACTER SET utf8 NOT NULL COMMENT 'Hauptinhalt', `audit_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'Audit-Zeit', `last_edit_time` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP KOMMENTAR 'Letzte Bearbeitungszeit', `status` enum('ERSTELLT','PRÜFEN','IGNORIERT','ONLINE','OFFLINE') ZEICHENSATZ utf8 NICHT NULL STANDARD 'ERSTELLT' KOMMENTAR 'Informationsstatus', Primärschlüssel (`id`), SCHLÜSSEL `idx_at_let` (`Audit_Time`,`letzte_Bearbeitungszeit`) )ENGINE=InnoDB STANDARD-CHARSET=utf8mb4; Der Index hat einen gemeinsamen Index mit Analysieren Sie die Logik der obigen SQL-Ausführung:
Schließlich werden, da die Datenmenge groß ist, obwohl nur 5 Zeilen entnommen werden, gemäß dem Extrembeispiel, das wir gerade angeführt haben, tatsächlich 1 Million Datenzeilen abgefragt und schließlich eine Speichersortierung von 500.000 Zeilen der Datenbank im Speicher durchgeführt. Es ist also sehr ineffizient. Um den Abfragevorgang im ersten Schritt zu verdeutlichen, wird ein schematisches Diagramm gezeichnet. Der rosa Teil stellt die Datenzeilen dar, die am Ende in der Tabelle abgefragt werden müssen. Im Bild habe ich einige Daten gemäß den Indexspeicherregeln gefälscht und ausgefüllt. Wenn etwas nicht stimmt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Ich hoffe, dass Sie anhand dieses Bilds die Methode der gemeinsamen Indexspeicherung und Indexabfrage erkennen können. Verbesserungsidee 1 Bereichssuchen sind mit guten Indizes nicht einfach zu verwenden. Welche Verbesserungen ergeben sich, wenn wir einen gemeinsamen Index für ALTER TABLE `th_content` ADD INDEX `idx_audit_status` (`audit_time`, `status`); mysql> erläutern Sie, wählen Sie „id“, „title“ aus „th_content“, wobei „audit_time“ < 1541984478 und „status“ = „ONLINE“, sortiert nach „audit_time“ desc, „id“ desc-Limit 5; +----+----------+------------+-------+------------------------------------------+------------------+--------+------+--------+-------------+ | ID | Auswahltyp | Tabelle | Typ | mögliche Schlüssel | Schlüssel | Schlüssellänge | Ref. | Zeilen | Extra | +----+----------+------------+-------+------------------------------------------+------------------+--------+------+--------+-------------+ | 1 | SIMPLE | th_content | Bereich | idx_at_ft_pt_let,idx_audit_status | idx_audit_status | 4 | NULL | 209754 | Verwenden von „where“ | +----+----------+------------+-------+------------------------------------------+------------------+--------+------+--------+-------------+ Details: Da Lassen Sie uns den Ausführungsprozess nach dem Hinzufügen des Indexes analysieren:
Im obigen Diagramm zeigt die rosa Farbe die Zeilen an, die die Indexanforderungen der ersten Spalte erfüllen. Wenn wir die Abfrage einzeln nach vorne ausführen, finden wir drei Datensätze in diesem Blattknoten. Dann müssen wir die Abfrage nach links am vorherigen Blattknoten fortsetzen. Bis 5 Zeilen gefunden sind, die den Datensätzen entsprechen, und schließlich zur Tabelle zurückkehren. Verbesserungen Da sich Nachteile dieses Indexes Wenn Wenn nur 4 Zeilen in den ersten 1 Million, die in Verbesserungsidee 2 ALTER TABLE `th_content` DROP INDEX `idx_audit_status`; ALTER TABLE `th_content` ADD INDEX `idx_status_audit` (`status`, `audit_time`); Somit entsteht kein Druck, egal ob beim Sortieren oder beim Zurücklegen an den Tisch. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
<<: Grafisches Tutorial zur Installation von CentOS7 auf VMware 15.5
>>: Detaillierte Erklärung des JavaScript-Stacks und der Kopie
1. Einleitung MySQL verfügt über eine Replikation...
Die Protokolle in MySQL umfassen: Fehlerprotokoll...
In diesem Artikel wird der spezifische JavaScript...
Inhaltsverzeichnis 1. Logbezogene Dienste 2. Geme...
Es gibt zwei Metaattribute: Name und http-equiv. D...
Viele Freunde haben in Foren und Nachrichtenberei...
1. Verwenden Sie das Image mysql/mysql-server:lat...
Inhaltsverzeichnis Manuelle Sicherung Timer-Siche...
Inhaltsverzeichnis Konfigurieren Sie zuerst packa...
Normalerweise färben wir als Webmaster während de...
Inhaltsverzeichnis 1. Dateien importieren 2. HTML...
Inhaltsverzeichnis 1. Neue Verwendung der Uhr 1.1...
Schritt 1: Den aktuellen Kernel anzeigen rew $ un...
Inhaltsverzeichnis 1.1Tinyint-Typbeschreibung 1.2...
Inhaltsverzeichnis Vorwort Grundlegende Konzepte ...