Die MySQL Typen CHAR und VARCHAR werden genutzt um kleine Texte bzw. Wörter in der Datenbank zu speichern. Um dies effizient zu machen, sollte man sehen ob man nich an deren Stelle ein ENUM nutzen kann.
So kann z.B. ein Kennzeichen für den Status vorhanden sein mit den Werten 'angelegt', 'freigesch
nutze ENUM vor VARCHAR oder CHAR
analyse die Tabellen
Mit der Prozedur ANALYSE() gibt MySQL die Möglichkeit die Tabelle zu untersuchen, und macht dabei Vorschläge für optimierte Tabellenspalten.
Wenn zum Beispiel eine Spalte als CHAR definiert ist, und sie nur ein paar unterschiedliche Werte enthält, ist es besser die Spalte als ENUM zu definieren.
B
benutze wenn möglich NOT NULL
Der Wert NOT NULL ist in den meisten Fällen nicht nötig. Meist macht es keinen Unterscheide, ob ein einer Spalte "0" oder "NULL" bzw. ein Leerstring oder "NULL" enthalten ist.
Beim Speichern innerhalb von MySQL gibt es aber einen Unterschied im Platzbedarf. Eine Spalte, welche nicht NOT NULL defini
benutze gleiche Typen bei JOINS
Wenn man einen JOIN ausführt, muss MySQL ja logischer Weise die Daten in den Spalten miteinander vergleichen. Die Spalten über welche der JOIN abgearbeitet wird, sollten dabei vom selben Type sein.
2
3
SELECT bar.foo
FROM bar
INNER JOIN bar2 ON ( bar.spalte = bar2.spalte )Wenn
» mehr lesenindiziere Spalten zum Suchen
Spalten, welche in Where Bedingungen genutzt werden sollten mit einem Indix versehen werden. Hat eine Spalte ein Index kann MySQL beim suchen auf das Scannen der Spalte verzichten und benutzt stattdessen den weit schnelleren Index.
Dies gilt nicht nur für Vergleiche mit dem gesamten Feldinhalt, son
Untersuche die Abfragen mit EXPLAIN
Mit EXPLAIN zeigt MySQL genau an, wie es eine Abfrage ausführt. Dabei werden die genutzten wie auch nicht genutzten Indizes angezeigt. Des Weiteren gibt EXPLAIN Auskunft darüber wie die Tabellen gescannt und sortiert werden. Alles in allem eine gute Möglichkeit Flaschenhälse und Strukturfehler zu fi
» mehr lesenvermeide SELECT *
Das Abfragen sämtlicher Spalten in einer SELECT-Anweisung ist in 99% aller Fälle überflüssig. Meist benötigt man nur bestimmte Spalten, dann sollte man auch nur diese Spalten abfragen. Natürlich ist es als Programmierer einfacher einfach ein "SELECT *" zu nutzen, als jeder benötigte Spalte einzeln z
» mehr lesenLIMIT 1 für einem einzelnen Datensatz
Wenn man einen einzelnen Datensatz abfragen will, ist es von Vorteil die Abfrage mit "LIMIT 1" zu begrenzen. Dadurch wird dem MySQL Server mitgeteilt, das er nach dem Finden des ersten Datensatzes mit dem Scannen der Tabelle(n) aufhören kann.
2
// die gesamte Tabelle wird gescannt
$result =sortiere nicht nach RAND() in MySQL
Wenn man einen beliebigen Datensatz aus einer Tabelle erhalten möchte, greifen viele zur schönen Funktion RAND() und begrenzen das Ergebnis mit LIMIT 1. Natürlich funktioniert dies, ist aber bei größeren Tabellen extrem ineffizient. MySQL kann in diesem Falle für das Sortieren keinen Index nutzen un
» mehr lesenmein Adventskalender - MySQL optimieren
Hallo,
hier entsteht jetzt mein ganz persönlicher Adventskalender. Es erfolgt jetzt jeden Tag eine Information, wie man Abfragen einer MySQL Datenbank beschleunigen kann.
Tipp 1: Nutzt den Query Cache
Der Query Cache von MySQL speichert die Ergebnisse von Abfragen zwischen, und liefert
» mehr lesen