Inhaltsverzeichnis
Welche Bedeutung hat die Erstellung eines „gemeinsamen Index“ in MySQL" >Welche Bedeutung hat die Erstellung eines „gemeinsamen Index“ in MySQL
Wenn die Spalte in MySQL vom Typ varchar ist, verwenden Sie bitte nicht den Typ int, um wie folgt auf
Heim Datenbank MySQL-Tutorial Was sind die Vorteile des MySQL-Union-Index? Die Bedeutung des gemeinsamen Index

Was sind die Vorteile des MySQL-Union-Index? Die Bedeutung des gemeinsamen Index

May 08, 2017 pm 02:58 PM

Welche Bedeutung hat die Erstellung eines „gemeinsamen Index“ in MySQL

Frage?
Was ist nötig, um einen „gemeinsamen Index“ zu erstellen? Was sind die praktischsten Vorteile? Wenn die Daten schneller abfragen werden sollen, wäre es dann nicht in Ordnung, einen einspaltigen Index zu haben? Warum gibt es einen „gemeinsamen Index“?

Vereinfacht ausgedrückt gibt es zwei Hauptgründe:

  • „Eins ist drei wert“. Wenn Sie einen zusammengesetzten Index aus (a, b, c) erstellen, entspricht dies tatsächlich dem Erstellen von drei Indizes (a), (a, b), (a, b, c), da jeder zusätzliche Index die Schreibvorgänge erhöht. Overhead und Speicherplatz-Overhead. Bei Tabellen mit großen Datenmengen ist das ein großer Overhead!

  • Abdeckungsindex. Dasselbe hat einen zusammengesetzten Index (a, b, c), wenn es die folgende SQL gibt: Wählen Sie a, b, c aus der Tabelle aus, wobei a=1 und b = 1. Dann kann MySQL Daten direkt durch Durchlaufen des Index abrufen, ohne die Tabelle zurückzugeben, wodurch viele zufällige E/A-Vorgänge reduziert werden. Die Reduzierung von E/A-Vorgängen, insbesondere zufälliger E/A, ist tatsächlich die wichtigste Optimierungsstrategie von DBA. Daher ist das Abdecken von Indizes in realen praktischen Anwendungen eine der wichtigsten Optimierungsmethoden zur Verbesserung der Leistung

  • Je mehr Indexspalten vorhanden sind, desto weniger Daten werden durch den Index herausgefiltert. Eine Tabelle mit 10 Millionen Daten hat die folgende SQL: Wählen Sie aus der Tabelle aus, wobei a = 1 und b = 2 und c = 3. Nehmen Sie an, dass jede Bedingung 10 % der Daten herausfiltern kann, wenn nur a vorhanden ist Einzelwertindex, dann Durch diesen Index können 1000W10%=100w Datenstücke herausgefiltert werden, und dann kann die Tabelle zurückgegeben werden, um die Daten zu finden, die mit b=2 und c=3 aus den 100w Datenstücken übereinstimmen , dann sortiert und dann Paging ; Wenn es sich um einen zusammengesetzten Index handelt, filtern Sie 1000w 10% 10% *10%=1w durch den Index und sortieren und paginieren Sie Welche Einer ist effizienter? Sie können es auf einen Blick erkennen

Die folgende Tabelle

enthält drei
create table test(
    a int,
    b int,
    c int,
);
Nach dem Login kopieren
Schlüssel

a, b, c. Wenn wir
viele Dinge wie select * from test where a=10, b>50, c>20
Kombinierte Abfrage ausführen müssen, müssen wir möglicherweise einen gemeinsamen Index mit [a, b, c] und einen separaten Index erstellen auf [a][b][c] ist nicht genug. (Sie können sich einen Index als eine sortierteed-Liste vorstellen.) Das Erstellen eines Index von (a, b, c) entspricht dem Sortieren von a, b, c (die Sortierregel lautet

<🎜). >
  if(X.a>Y.a)
    return &#39;>&#39;;
  else if(X.a<Y.a)
    return &#39;<&#39;;
   else if(X.b>Y.b)
    return &#39;>&#39;;
   else if (X.b<Y.b)
    return &#39;<&#39;;
   else if (X.c>Y.c)
    return  &#39;>&#39;
   else if (X.c<Y.c)
    return  &#39;<&#39;
   esle
    return &#39;==&#39;
)
Nach dem Login kopieren
Es unterscheidet sich von der Sortierung nach a, der Sortierung nach b bzw. der Sortierung nach c.

Die Reihenfolge von a b c ist ebenfalls wichtig, manchmal kann es a c b oder b c a usw. sein. Wenn Sie erstellen (a, der gemeinsame Index von b, c), die Abfrageeffizienz ist wie folgt:


Das Folgende wird grafisch dargestellt
  优: select * from test where a=10 and b>50
  差: select * from test where a>50

  优: select * from test order by a
  差: select * from test order by b
  差: select * from test order by c

  优: select * from test where a=10 order by a
  优: select * from test where a=10 order by b
  差: select * from test where a=10 order by c

  优: select * from test where a>10 order by a
  差: select * from test where a>10 order by b
  差: select * from test where a>10 order by c

  优: select * from test where a=10 and b=10 order by a
  优: select * from test where a=10 and b=10 order by b
  优: select * from test where a=10 and b=10 order by c

  优: select * from test where a=10 and b=10 order by a
  优: select * from test where a=10 and b>10 order by b
  差: select * from test where a=10 and b>10 order by c
Nach dem Login kopieren


Drei Hinweise

Wenn die Spalte in MySQL vom Typ varchar ist, verwenden Sie bitte nicht den Typ int, um wie folgt auf

zuzugreifen

Die Produkt-ID in der Tabelle zz_deals ist vom Typ varchar

Werbe-Slogan
mysql> explain select * from zz_deals where  qq_shop_id = 64230 and product_id = &#39;38605906667&#39; ;+----+-------------+-------------+------+------------------------------+------------------------------+---------+-------------+------+-------------+| id | select_type | table       | type | possible_keys                | key                          | key_len | ref         | rows | Extra       |+----+-------------+-------------+------+------------------------------+------------------------------+---------+-------------+------+-------------+|  1 | SIMPLE      | zz_deals | ref  | by_product_id_and_qq_shop_id | by_product_id_and_qq_shop_id | 156     | const,const |    1 | Using where |+----+-------------+-------------+------+------------------------------+------------------------------+---------+-------------+------+-------------+1 row in set (0.00 sec)
mysql> explain select * from zz_deals where  qq_shop_id = 64230 and product_id = 38605906667 ;+----+-------------+-------------+------+------------------------------+------+---------+------+------+-------------+| id | select_type | table       | type | possible_keys                | key  | key_len | ref  | rows | Extra       |+----+-------------+-------------+------+------------------------------+------+---------+------+------+-------------+|  1 | SIMPLE      | zz_deals | ALL  | by_product_id_and_qq_shop_id | NULL | NULL    | NULL |   17 | Using where |+----+-------------+-------------+------+------------------------------+------+---------+------+------+-------------+1 row in set (0.00 sec)
Nach dem Login kopieren

Nach zweieinhalb Monaten Vorbereitung, drei großen Überarbeitungen und siebzehn kleineren Überarbeitungen ist le1024 endlich bereit, Sie kennenzulernen

le1024 empfiehlt jeden Tag 1–3 interessante, liebevolle und erzählende Videos 🎜>

[Verwandte Empfehlungen]Kostenloses MySQL-Online-Video-Tutorial

2. Neuestes MySQL-Handbuch-Tutorial

3.

Datenbankdesign dieser Dinge

Das obige ist der detaillierte Inhalt vonWas sind die Vorteile des MySQL-Union-Index? Die Bedeutung des gemeinsamen Index. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

Mysqls Platz: Datenbanken und Programmierung Mysqls Platz: Datenbanken und Programmierung Apr 13, 2025 am 12:18 AM

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

So stellen Sie eine Verbindung zur Datenbank von Apache her So stellen Sie eine Verbindung zur Datenbank von Apache her Apr 13, 2025 pm 01:03 PM

Apache verbindet eine Verbindung zu einer Datenbank erfordert die folgenden Schritte: Installieren Sie den Datenbanktreiber. Konfigurieren Sie die Datei web.xml, um einen Verbindungspool zu erstellen. Erstellen Sie eine JDBC -Datenquelle und geben Sie die Verbindungseinstellungen an. Verwenden Sie die JDBC -API, um über den Java -Code auf die Datenbank zuzugreifen, einschließlich Verbindungen, Erstellen von Anweisungen, Bindungsparametern, Ausführung von Abfragen oder Aktualisierungen und Verarbeitungsergebnissen.

So starten Sie MySQL von Docker So starten Sie MySQL von Docker Apr 15, 2025 pm 12:09 PM

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

CentOS installieren MySQL CentOS installieren MySQL Apr 14, 2025 pm 08:09 PM

Die Installation von MySQL auf CentOS umfasst die folgenden Schritte: Hinzufügen der entsprechenden MySQL Yum -Quelle. Führen Sie den Befehl mySQL-server aus, um den MySQL-Server zu installieren. Verwenden Sie den Befehl mySQL_SECURE_INSTALLATION, um Sicherheitseinstellungen vorzunehmen, z. B. das Festlegen des Stammbenutzerkennworts. Passen Sie die MySQL -Konfigurationsdatei nach Bedarf an. Tune MySQL -Parameter und optimieren Sie Datenbanken für die Leistung.

See all articles