MySQL Performance optimieren: Praktische Tipps | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

241 Dokumentationen verfügbar

Wissensdatenbank

MySQL Performance Optimieren

Zuletzt aktualisiert: 09.01.2026 um 18:23 Uhr

MySQL Performance optimieren: Praktische Tipps

Langsame Datenbankabfragen bremsen Ihre Website aus. In diesem Guide zeigen wir die wichtigsten Optimierungen für MySQL – von Indexen über Query-Optimierung bis zur Server-Konfiguration.

1. Indexe richtig einsetzen

Indexe sind der wichtigste Faktor für schnelle Abfragen. Ohne Index durchsucht MySQL jede Zeile einzeln.

Index erstellen

-- Einfacher Index
CREATE INDEX idx_email ON users(email);

-- Zusammengesetzter Index (mehrere Spalten)
CREATE INDEX idx_name_created ON users(name, created_at);

-- Unique Index (keine Duplikate)
CREATE UNIQUE INDEX idx_unique_email ON users(email);

Wann Indexe verwenden?

Index sinnvoll Index nicht sinnvoll
WHERE-Bedingungen Kleine Tabellen (< 1000 Zeilen)
JOIN-Spalten Spalten die oft geändert werden
ORDER BY Spalten Spalten mit wenig verschiedenen Werten
GROUP BY Spalten TEXT/BLOB Spalten

2. Queries optimieren

EXPLAIN verwenden

EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';

Zeigt wie MySQL die Abfrage ausführt. Achten Sie auf:

  • type: "ALL" ist schlecht (Full Table Scan), "ref" oder "const" ist gut
  • rows: Je weniger, desto besser
  • Extra: "Using index" ist optimal

Häufige Query-Fehler

❌ Schlecht ✅ Besser
SELECT * SELECT id, name, email
WHERE YEAR(date) = 2026 WHERE date BETWEEN '2026-01-01' AND '2026-12-31'
LIKE '%suchbegriff%' LIKE 'suchbegriff%'
OR in WHERE UNION oder IN()

Beispiel: Query verbessern

-- ❌ Langsam: Funktion auf Spalte verhindert Index
SELECT * FROM orders WHERE YEAR(created_at) = 2026;

-- ✅ Schnell: Index kann genutzt werden
SELECT * FROM orders 
WHERE created_at >= '2026-01-01' 
AND created_at < '2027-01-01';

3. Tabellen optimieren

Richtige Datentypen wählen

Statt Besser Warum
VARCHAR(255) VARCHAR(50) Weniger Speicher
INT TINYINT/SMALLINT Wenn Werte klein sind
TEXT VARCHAR Wenn Länge bekannt
DATETIME TIMESTAMP 4 statt 8 Bytes

Tabelle analysieren & optimieren

-- Statistiken aktualisieren
ANALYZE TABLE users;

-- Fragmentierung beheben
OPTIMIZE TABLE users;

-- Tabellenstatus prüfen
SHOW TABLE STATUS LIKE 'users';

4. MySQL Konfiguration

In der my.cnf (Linux) oder my.ini (Windows):

[mysqld]
# Buffer Pool (50-70% des RAM für dedizierte DB-Server)
innodb_buffer_pool_size = 1G

# Query Cache (bei MySQL 8 entfernt, bei 5.7 nützlich)
query_cache_size = 128M
query_cache_type = 1

# Verbindungen
max_connections = 150

# Temporäre Tabellen
tmp_table_size = 64M
max_heap_table_size = 64M

# Logs
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

5. Slow Query Log auswerten

# Aktivieren
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;

# Auswerten mit mysqldumpslow
mysqldumpslow -s t /var/log/mysql/slow.log
⚠️ Wichtig: Nach Konfigurationsänderungen MySQL neu starten: sudo systemctl restart mysql

Quick Wins Checkliste

  • ☐ Indexe auf WHERE/JOIN Spalten prüfen
  • ☐ SELECT * durch konkrete Spalten ersetzen
  • ☐ EXPLAIN bei langsamen Queries nutzen
  • ☐ Slow Query Log aktivieren
  • ☐ innodb_buffer_pool_size anpassen
  • ☐ Regelmäßig OPTIMIZE TABLE ausführen

Weitere Informationen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120