VorwortJede gute Angewohnheit ist ein Schatz. Dieser Artikel ist in drei Richtungen unterteilt: SQL-Reue-Heilmittel, SQL-Leistungsoptimierung und SQL-Standard-Eleganz. Er teilt 21 gute Angewohnheiten und Best Practices zum Schreiben von SQL! Nach dem Schreiben von SQL erklären Sie, wie Sie den Ausführungsplan anzeigen (SQL-Leistungsoptimierung) Versuchen Sie, sich beim Schreiben von SQL in der täglichen Entwicklung diese gute Angewohnheit anzueignen: Verwenden Sie nach dem Schreiben des SQL „explain“, um es zu analysieren, und achten Sie dabei besonders darauf, ob der Index verwendet wird. Fügen Sie beim Ausführen einer Lösch- oder Aktualisierungsanweisung ein Limit hinzu (SQL Regret Medicine). Versuchen Sie, beim Ausführen von Lösch- oder Aktualisierungsanweisungen ein Limit hinzuzufügen. Nehmen Sie als Beispiel das folgende SQL:
Denn das Hinzufügen eines Limits hat folgende Vorteile:
Beim Entwurf einer Tabelle alle Tabellen und Felder mit entsprechenden Kommentaren versehen (SQL-Standard und elegant) Diese gute Angewohnheit muss entwickelt werden. Fügen Sie beim Entwerfen von Datenbanktabellen allen Tabellen und Feldern entsprechende Kommentare hinzu, um die spätere Wartung zu erleichtern. Positives Beispiel: CREATE TABLE `Konto` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Primärschlüssel-ID', `name` varchar(255) DEFAULT NULL COMMENT 'Kontoname', `balance` int(11) STANDARD NULL KOMMENTAR 'Balance', `create_time` datetime NICHT NULL KOMMENTAR 'Erstellungszeit', `update_time` datetime NICHT NULL BEIM UPDATE CURRENT_TIMESTAMP KOMMENTAR 'Aktualisierungszeit', Primärschlüssel (`id`), SCHLÜSSEL `idx_name` (`name`) MIT BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1570068 DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT COMMENT='Kontotabelle'; Gegenbeispiel: CREATE TABLE `Konto` ( `id` int(11) NICHT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `balance` int(11) DEFAULT NULL, `create_time` datetime NICHT NULL, `update_time` datetime NICHT NULL BEIM UPDATE CURRENT_TIMESTAMP, Primärschlüssel (`id`), SCHLÜSSEL `idx_name` (`name`) MIT BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1570068 DEFAULT CHARSET=utf8; Achten Sie beim Schreiben von SQL auf eine konsistente Schlüsselwortgröße und verwenden Sie Einrückungen. (SQL ist elegant und standardisiert) Positives Beispiel:
Gegenbeispiel:
Durch die Vereinheitlichung der Groß- und Kleinschreibung von Schlüsselwörtern und die Verwendung von Einrückungen sieht Ihr SQL natürlich eleganter aus. Die INSERT-Anweisung gibt den entsprechenden Feldnamen an (SQL-Standard und elegant) Gegenbeispiel:
Positives Beispiel:
Der SQL-Änderungsvorgang sollte zunächst mit detaillierten Vorgangsschritten und Rollback-Plan in der Testumgebung durchgeführt und vor der Produktion überprüft werden. (SQL-Bedauernsmedizin)
Fügen Sie beim Entwerfen einer Datenbanktabelle drei Felder hinzu: Primärschlüssel, Erstellungszeit und Aktualisierungszeit. (SQL-Standard-Eleganz) Gegenbeispiel: CREATE TABLE `Konto` ( `name` varchar(255) DEFAULT NULL COMMENT 'Kontoname', `balance` int(11) STANDARD NULL KOMMENTAR 'Balance', ) ENGINE=InnoDB AUTO_INCREMENT=1570068 DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT COMMENT='Kontotabelle'; Positives Beispiel: CREATE TABLE `Konto` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Primärschlüssel-ID', `name` varchar(255) DEFAULT NULL COMMENT 'Kontoname', `balance` int(11) STANDARD NULL KOMMENTAR 'Balance', `create_time` datetime NICHT NULL KOMMENTAR 'Erstellungszeit', `update_time` datetime NICHT NULL BEIM UPDATE CURRENT_TIMESTAMP KOMMENTAR 'Aktualisierungszeit', Primärschlüssel (`id`), SCHLÜSSEL `idx_name` (`name`) MIT BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1570068 DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT COMMENT='Kontotabelle'; Grund: 1. Der Primärschlüssel muss hinzugefügt werden. Eine Tabelle ohne Primärschlüssel ist seelenlos. Das Alibaba-Entwicklungshandbuch erwähnt diesen Punkt auch, wie in der Abbildung gezeigt Überprüfen Sie nach dem Schreiben der SQL-Anweisung die Spalten nach „where“, „order by“ und „group by“ und ob die Spalten, die sich auf mehrere Tabellen beziehen, indiziert wurden. Dabei haben kombinierte Indizes Vorrang. (SQL-Leistungsoptimierung) Gegenbeispiel: Positives Beispiel:
Bevor Sie wichtige Daten ändern oder löschen, sichern Sie sie zuerst, sichern Sie sie zuerst, sichern Sie sie zuerst (SQL-Bedauernsmedizin) Wenn Sie Daten ändern oder löschen möchten, müssen Sie vor der Ausführung von SQL eine Sicherungskopie der zu ändernden Daten erstellen. Im Falle einer falschen Operation können Sie es später bereuen. Achten Sie auf die implizite Konvertierung der Datentypen der Felder nach where (SQL-Leistungsoptimierung). Gegenbeispiel:
Positives Beispiel:
Grund: Denn wenn keine einfachen Anführungszeichen hinzugefügt werden, erfolgt der Vergleich zwischen einer Zeichenfolge und einer Zahl, und ihre Typen stimmen nicht überein. MySQL führt eine implizite Typkonvertierung durch und wandelt sie vor dem Vergleich in Gleitkommazahlen um, was letztendlich dazu führt, dass der Index ungültig wird. Versuchen Sie, alle Spalten als NOT NULL zu definieren (SQL-Standard-Eleganz)
Um SQL zu ändern oder zu löschen, schreiben Sie zuerst WHERE zur Überprüfung und fügen Sie dann nach der Bestätigung „Löschen“ oder „Aktualisieren“ hinzu (SQL-Bedauernsmedizin). Reduzieren Sie unnötige Feldrückgaben, z. B. durch die Verwendung von „select <spezifisches Feld>“ anstelle von „select *“ (SQL-Leistungsoptimierung). Gegenbeispiel:
Positives Beispiel:
Grund:
Alle Tabellen müssen die Innodb-Speicher-Engine verwenden (SQL-Standard-Eleganz) Innodb unterstützt Transaktionen, Sperren auf Zeilenebene, bessere Wiederherstellbarkeit und bessere Leistung bei hoher Parallelität. Sofern keine besonderen Anforderungen bestehen (d. h. Funktionen, die Innodb nicht erfüllen kann, wie z. B. Spaltenspeicherung, Speicherplatzdaten usw.), müssen daher alle Tabellen die Innodb-Speicher-Engine verwenden. Der Zeichensatz der Datenbank und der Tabelle wird auf UTF8 (eleganter SQL-Standard) vereinheitlicht. Verwenden Sie einheitlich die UTF8-Kodierung
Wenn Sie Ausdrücke speichern, können Sie utf8mb4 in Betracht ziehen. Versuchen Sie, varchar statt char zu verwenden. (SQL-Leistungsoptimierung) Gegenbeispiel:
Positives Beispiel:
Grund: Erstens benötigen Felder mit variabler Länge weniger Speicherplatz, wodurch Speicherplatz gespart werden kann. Wenn Sie die Bedeutung eines Feldes ändern oder dem Feld zusätzliche Status hinzufügen, müssen Sie die Feldanmerkung zeitnah aktualisieren. (SQL ist elegant und standardisiert) SQL ändert Daten und entwickelt die Gewohnheit, Transaktionen zu beginnen und festzuschreiben. (SQL-Medizin gegen Bedauern) Positives Beispiel:
Gegenbeispiel:
Die Benennung von Indizes sollte standardisiert werden. Der Name des Primärschlüsselindex lautet pk_Feldname, der eindeutige Indexname lautet uk_Feldname und der gemeinsame Indexname lautet idx_Feldname. (SQL ist elegant und standardisiert) Es wird keine Funktionskonvertierung oder Ausdrucksberechnung für Spalten in der WHERE-Klausel durchgeführt. Gehen Sie davon aus, dass loginTime indiziert ist. Gegenbeispiel:
Positives Beispiel:
Wenn zu viele Daten geändert oder aktualisiert werden müssen, sollten Sie dies stapelweise tun. Gegenbeispiel:
Positives Beispiel:
Grund:
Ich hoffe, dass die obigen Inhalte den Lesern auf ihrem Weg zum Programmieren hilfreich sein werden! Das ist alles für diesen Artikel zu 21 Best Practices zur MySQL-Standardisierung und -Optimierung! Dies ist das Ende des Artikels. Weitere relevante Inhalte zur MySQL-Standardoptimierung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Docker Gitlab+Jenkins+Harbor erstellt einen persistenten Plattformbetrieb
>>: Detaillierte Erklärung des Javascript Echarts Luftqualitätskarteneffekts
Vorwort Das MySQL Slow Query Log ist ein Protokol...
Im vorherigen Artikel habe ich den detaillierten ...
Vorwort Durch das Erstellen von Verknüpfungen in ...
Ich habe einen Server, auf dem mehrere Docker-Con...
In diesem Artikelbeispiel wird der spezifische JS...
Inhaltsverzeichnis Vorwort: Schritt 1: Finden Sie...
Diese eingeführten HTML-Tags entsprechen nicht un...
Inhaltsverzeichnis Szeneneinführung Plugin-Implem...
Im Zuge des schrittweisen Übergangs von herkömmli...
Vorwort In der Springboot-Konfigurationsdatei hab...
1. Offizielle Website-Adresse Auf der offiziellen...
Vorwort Die bei der persönlichen tatsächlichen En...
Inhaltsverzeichnis 1. Prozesskontrolle 2. Sequent...
Software- und Hardwareumgebung centos7.6.1810 64b...
Daten-URI Data URI ist ein durch RFC 2397 definie...