Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL-Datenbankoptimierung mit Indizierung

In Bezug auf die Indexfragen ist ein Index nicht nur wünschenswert, sondern erforderlich Dinge "beschleunigen". So wie ich es verstehe (in "Laienbegriffen"), besteht die Funktion eines Index darin, die Suche und Wiederherstellung von Daten in einer Tabelle zu beschleunigen.

Gründe für die Verwendung von Indizes:

  1. Identifizieren Sie jede Zeile in jeder Tabelle eindeutig (der Primärschlüssel ist schließlich ein Index)
  2. Die Indizes sind sortiert (auch wenn die Daten nicht sortiert sind)
  3. Suchen und Filter beschleunigen:Ein Index beschleunigt die Wiederherstellung von Daten, da er die Platzierung der Daten in der Tabelle „festhält“ (er „festlegt“ die Daten, die Sie wiederherstellen möchten). Außerdem erleichtert es der Datenbank-Engine das Filtern der Daten (es ist immer schneller und einfacher, sortiert zu filtern Daten als verschlüsselt Daten)
  4. Optimieren Sie die Art und Weise, wie Daten wiederhergestellt werden, wenn Sie verknüpfte Tabellen verwenden:Jeder Fremdschlüssel muss indiziert werden, um die Abfragen zu beschleunigen, die Primär-Fremdschlüssel-Beziehungen beinhalten

Einige "Daumenregeln", die ich verwende, um zu entscheiden, welche Felder indiziert werden müssen:

  • Jeder Primärschlüssel ist indiziert (das offensichtliche eins:ein Primärschlüssel muss eindeutig sein und darf nicht null sein)
  • Jeder Fremdschlüssel muss indiziert werden (um Primär-Fremdschlüssel-Beziehungen effizient zu gestalten)
  • Jedes Zahlen- oder Datumsfeld, in dem ich Suchen durchführen muss, muss indiziert werden. Trotzdem versuche ich, double zu vermeiden (oder andere numerische Fließkommatypen) Felder, die indiziert werden sollen, da sie im Allgemeinen zum Speichern von Werten verwendet werden, die nicht durchsucht werden sollen.
  • Jedes char oder varchar Feld, auf dem ich Suchen durchführen muss, muss indiziert werden. Versuchen Sie Indexe auf text zu vermeiden Felder, da sie sehr große Werte enthalten können.
  • Vermeiden Indizierung binär (blob ) Felder... macht keinen Sinn
  • Nicht der Versuchung erliegen, alles zu indizieren. Nehmen Sie sich Zeit, um zu entscheiden, welche Felder müssen indiziert werden und welche Felder nicht dürfen indexiert werden.