Ist es notwendig, einen separaten Index für die MySQL-Partitionsfeldspalte zu erstellen?

Ist es notwendig, einen separaten Index für die MySQL-Partitionsfeldspalte zu erstellen?

Vorwort

Jeder weiß, dass das Partitionsfeld Teil des Primärschlüssels sein muss. Müssen Sie also nach dem Erstellen eines zusammengesetzten Primärschlüssels einen separaten Index für das Partitionsfeld hinzufügen? Gibt es irgendeine Wirkung? Lassen Sie es uns überprüfen. Werfen wir ohne weitere Umschweife einen Blick auf die ausführliche Einführung.

1. Erstellen Sie eine neue Tabelle effect_new (partitioniert nach Monat basierend auf der Erstellungszeit)

Tabelle „effect_new“ erstellen (
 `id` bigint(20) NICHT NULL AUTO_INCREMENT,
 `Typ` tinyint(4) NICHT NULL STANDARD '0',
 `Zeitzone` varchar(10) DEFAULT NULL,
 `date` varchar(10) NICHT NULL,
 `Stunde` varchar(2) DEFAULT NULL,
 `position` varchar(200) DEFAULT NULL,
 `Land` varchar(32) NICHT NULL,
 `create_time` datetime NICHT NULL STANDARD '1970-01-01 00:00:00',
 PRIMÄRSCHLÜSSEL (`id`,`Erstellungszeit`),
 SCHLÜSSEL `index_date_hour_country` (`Datum`,`Stunde`,`Land`)
) ENGINE=InnoDB AUTO_INCREMENT=983041 DEFAULT CHARSET=utf8
PARTITION NACH BEREICH (BIS_TAGE (`Erstellungszeit`))
(PARTITION p0 WERTE WENIGER ALS (736754) ENGINE = InnoDB,
 PARTITION p1 WERTE WENIGER ALS (736785) ENGINE = InnoDB,
 PARTITION p2 WERTE WENIGER ALS (736815) ENGINE = InnoDB,
 PARTITION p3 WERTE WENIGER ALS (736846) ENGINE = InnoDB,
 PARTITION p4 WERTE WENIGER ALS (736876) ENGINE = InnoDB,
 PARTITION p5 WERTE WENIGER ALS (736907) ENGINE = InnoDB,
 PARTITION p6 WERTE WENIGER ALS (736938) ENGINE = InnoDB,
 PARTITION p7 WERTE WENIGER ALS (736968) ENGINE = InnoDB,
 PARTITION p8 WERTE WENIGER ALS (736999) ENGINE = InnoDB,
 PARTITION p9 WERTE WENIGER ALS (737029) ENGINE = InnoDB,
 PARTITION p10 WERTE WENIGER ALS (737060) ENGINE = InnoDB);

2. Geben Sie einige Daten ein,

INSERT INTO `effect_new` (`id`, `Typ`, `Zeitzone`, `Datum`, `Stunde`, `Position`, `Land`, `Erstellungszeit`) VALUES ('1', '0', 'GMT+8', '01.07.2017', '', 'M-NotiCleanFull-FamilyRecom-0026', '', '02.07.2017 00:07:02');
INSERT INTO `effect_new` (`id`, `Typ`, `Zeitzone`, `Datum`, `Stunde`, `Position`, `Land`, `Erstellungszeit`) VALUES ('2', '1', 'GMT+8', '30.09.2017', '23', 'Ma5dtJub', 'EG', '01.10.2017 00:00:00');
INSERT INTO `effect_new` (`id`, `Typ`, `Zeitzone`, `Datum`, `Stunde`, `Position`, `Land`, `Erstellungszeit`) VALUES ('3', '1', 'GMT+8', '10.09.2017', '10', '28', 'DZ', '11.09.2017 00:08:20');
INSERT INTO `effect_new` (`id`, `Typ`, `Zeitzone`, `Datum`, `Stunde`, `Position`, `Land`, `Erstellungszeit`) VALUES ('4', '1', 'GMT+8', '2017-02-03', '20', '32', 'AD', '2017-02-04 00:00:00');
INSERT INTO `effect_new` (`id`, `Typ`, `Zeitzone`, `Datum`, `Stunde`, `Position`, `Land`, `Erstellungszeit`) VALUES ('5', '0', 'GMT+8', '05.03.2017', '2', NULL, 'AI', '06.03.2017 02:10:00');
INSERT INTO `effect_new` (`id`, `Typ`, `Zeitzone`, `Datum`, `Stunde`, `Position`, `Land`, `Erstellungszeit`) VALUES ('6', '0', 'GMT+8', '2017-09-23', '13', 'M-BrandSplash-S-0038', 'AG', '2017-09-23 13:00:00');
INSERT INTO `effect_new` (`id`, `Typ`, `Zeitzone`, `Datum`, `Stunde`, `Position`, `Land`, `Erstellungszeit`) VALUES ('7', '1', NULL, '2017-10-13', '12', 'BB-Main-AppAd-0018', 'AF', '2017-10-14 12:00:00');
INSERT INTO `effect_new` (`id`, `Typ`, `Zeitzone`, `Datum`, `Stunde`, `Position`, `Land`, `Erstellungszeit`) VALUES ('8', '0', 'GMT+8', '28.10.2017', '2', 'M-ChargeReminder-S-0040', 'AE', '29.10.2017 00:00:00');
INSERT INTO `effect_new` (`id`, `Typ`, `Zeitzone`, `Datum`, `Stunde`, `Position`, `Land`, `Erstellungszeit`) VALUES ('9', '1', 'GMT+8', '2017-10-09', NULL, '30', 'AI', '2017-10-10 00:09:00');
INSERT INTO `effect_new` (`id`, `Typ`, `Zeitzone`, `Datum`, `Stunde`, `Position`, `Land`, `Erstellungszeit`) VALUES ('10', '0', 'GMT+8', '2017-10-05', '5', 'M-BrandSplash', 'LA', '2017-10-06 05:10:00');

3. Aussagen analysieren

PARTITIONEN ERKLÄREN
Wählen Sie * aus effect_new_index
wobei create_time = '2017-10-14 12:00:00'

Das Ergebnis ist:

Ausweis Wählen Sie Typ Tisch Partitionen Typ mögliche Schlüssel Schlüssel Schlüssellänge Referenz Reihen Filtern nach Extra
1 EINFACH effect_new Seite 8 ALLE Null Null Null Null 391515 10 Verwenden von „where“

4. Fügen Sie den Index idx_ctime zur Tabelle effect_new hinzu

5. Analysieren Sie den Ausführungsplan nach dem Hinzufügen des Index

Das Ergebnis ist:

Ausweis Wählen Sie Typ Tisch Partitionen Typ mögliche Schlüssel Schlüssel Schlüssellänge Referenz Reihen Filtern nach Extra
1 EINFACH effect_new Seite 8 Referenz idx_ctime idx_ctime 5 Konstante 60760 100 Null

6. Fazit:

Obwohl die Tabelle durch dieses Feld partitioniert wird, ist dies nicht dasselbe wie ein Index. Nach der Partitionierung können wir nur sagen, dass die Datensätze mit einem bestimmten Wert im Feld in einer bestimmten Partition liegen, aber es handelt sich nicht um einen Index und es dauert eine Weile, sie zu finden.

Manchmal ist der Primärschlüssel nicht identisch mit der Partitionierungsspalte. Wenn Sie einen gruppierten Index für den Primärschlüssel erstellen möchten, müssen Sie die Partitionierungsspalte einschließen, um daraus einen zusammengesetzten Primärschlüssel zu machen. Verfügt die Partitionsbasisspalte in diesem Fall also nicht über einen Index? Ja, aber es ist nicht schnell genug. Wenn die Partitionierungsspalte in diesem zusammengesetzten Index nicht an erster Stelle steht, ist sie nicht schnell genug. Wenn die Partitionierungsspalte häufig als Filterbedingung in Suchanweisungen verwendet wird, muss ein zusätzlicher Index für die Partitionierungsspalte erstellt werden.

Zusammenfassen

Dies ist der vollständige Inhalt dieses Artikels. Er weist noch viele Mängel auf. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit aller hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Erweiterte MySQL-Funktionen - detaillierte Erläuterung des Konzepts und des Mechanismus der Datentabellenpartitionierung
  • Ausführliche Erläuterung der Kenntnisse zu MySql-Tabellen, Datenbanken, Sharding und Partitionierung
  • Einführung in die Wissenspunkte MySql-Tabelle, Datenbank, Sharding und Partitionierung
  • Spezifische Implementierungsmethoden für MySQL-Tabellen-Sharding und -Partitionierung
  • MySQL-Partitionierungspraxis mit Navicat
  • Richtiger Einsatz von MySQL-Partitionstabellen
  • Mysql-Optimierung Zabbix-Partitionsoptimierung
  • Überlegungen zur Partitionierung von MySQL-Datenbanktabellen [empfohlen]
  • Eine kurze Analyse der MySQL-Datentabellenpartitionstechnologie
  • MySQL-Datentabellenpartitionierungsstrategie und Vor- und Nachteileanalyse

<<:  Tutorial zur Installation von VMware WorkStation 14 Pro unter Ubuntu 17.04

>>:  Dateifreigabe zwischen Ubuntu und Windows unter VMware

Artikel empfehlen

CSS Clear Float Clear:Both Beispielcode

Heute werde ich mit Ihnen über das Löschen von Fl...

Über das Problem der vertikalen Zentrierung von img und span in div

Wie unten dargestellt: XML/HTML-CodeInhalt in die...

Verwendung von MySQL DDL-Anweisungen

Vorwort Die Sprachklassifikation von SQL umfasst ...

MySQL 8.0.12 Installations- und Nutzungs-Tutorial

Das Installations- und Verwendungstutorial für My...

Praktische Methode zum Löschen von Dateien über die Linux-Befehlszeile

rm-Befehl Der Befehl rm wird von den meisten Benu...

Beispiel für das Herunterladen von Dateien mit vue+django

Inhaltsverzeichnis 1. Übersicht 2. Django-Projekt...

NULL und leere Zeichenfolge in MySQL

Ich bin vor kurzem mit MySQL in Berührung gekomme...

JavaScript zählt, wie oft ein Zeichen vorkommt

In diesem Artikelbeispiel wird der spezifische Ja...

Verwendung des Vuex-Namespace

Inhaltsverzeichnis Da Vuex einen einzelnen Zustan...

Einführung in das Enctype-Attribut des Form-Tags und seine Anwendungsbeispiele

Enctype: Gibt den Kodierungstyp an, der vom Browse...

Vollständiges Beispiel der Kapselung der globalen Toast-Komponente durch Vue

Inhaltsverzeichnis Vorwort 1. Mit vue-cli 1. Defi...

Bootstrap 3.0 Studiennotizen Grid-System-Fall

Vorwort Im vorherigen Artikel haben wir hauptsäch...