MySQL-Abfragen mit KI optimieren
Generieren und optimieren Sie MySQL-Abfragen automatisch. Speziell entwickelt für die besonderen Funktionen und Möglichkeiten von MySQL.
MySQL-spezifische Funktionen
1. Index-Optimierung
ALTER TABLE produkte ADD INDEX idx_kategorie_preis (kategorie_id, preis);
ALTER TABLE verkaeufe ADD INDEX idx_datum_kunde (verkaufsdatum, kunden_id);
EXPLAIN ANALYZE
SELECT
p.produktname,
k.kategoriename,
COUNT(*) as verkaufsmenge
FROM produkte p
USE INDEX (idx_kategorie_preis)
JOIN kategorien k ON p.kategorie_id = k.id
JOIN verkaeufe v USE INDEX (idx_datum_kunde)
ON p.id = v.produkt_id
WHERE v.verkaufsdatum >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
GROUP BY p.id, p.produktname,
2. Partitionierung
ALTER TABLE verkaeufe
PARTITION BY RANGE (YEAR(verkaufsdatum)) (
PARTITION p2022 VALUES LESS THAN (2023),
PARTITION p2023 VALUES LESS THAN (2024),
PARTITION p2024 VALUES LESS THAN MAXVALUE
)
3. Stored Procedures
DELIMITER //
CREATE PROCEDURE aktualisiere_produktstatistik(IN produkt_id INT)
BEGIN
DECLARE v_verkaufsmenge INT;
DECLARE v_durchschnittspreis DECIMAL(10,2);
SELECT
COUNT(*),
AVG(preis)
INTO v_verkaufsmenge, v_durchschnittspreis
FROM verkaeufe
WHERE produkt_id = produkt_id
AND verkaufsdatum >= DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY);
UPDATE produkte
SET
monatliche_verkaeufe = v_verkaufsmenge,
durchschnittspreis = v_durchschnittspreis,
letzte_aktualisierung = NOW()
WHERE id = produkt_id;
END
Praxisbeispiele
1. Verkaufsanalyse
WITH monatliche_verkaeufe AS (
SELECT
DATE_FORMAT(verkaufsdatum, '%Y-%m') as monat,
SUM(betrag) as gesamtumsatz,
COUNT(DISTINCT kunden_id) as unique_kunden,
GROUP_CONCAT(DISTINCT
CONCAT(produkt_id, ':', menge)
ORDER BY menge DESC
SEPARATOR '; '
) as top_produkte
FROM verkaeufe
WHERE verkaufsdatum >= DATE_SUB(CURRENT_DATE, INTERVAL 12 MONTH)
GROUP BY monat
)
SELECT
monat,
gesamtumsatz,
unique_kunden,
ROUND((gesamtumsatz / unique_kunden), 2) as durchschnittswert,
top_produkte
FROM monatliche_verkaeufe
ORDER BY monat DESC
2. Bestandsverwaltung
CREATE TRIGGER nach_verkauf
AFTER INSERT ON verkaeufe
FOR EACH ROW
BEGIN
UPDATE produkte
SET lagerbestand = lagerbestand - NEW.menge
WHERE id = NEW.produkt_id;
INSERT INTO benachrichtigungen (produkt_id, nachricht, erstellt_am)
SELECT
id,
CONCAT('Niedriger Bestand: ', produktname),
NOW()
FROM produkte
WHERE id = NEW.produkt_id
AND lagerbestand <= mindestbestand;
END
Leistungsoptimierung
1. Query Cache
SHOW VARIABLES LIKE 'query_cache%';
SELECT SQL_CACHE
kategoriename,
COUNT(*) as anzahl
FROM kategorien
GROUP BY
2. Temporäre Tabellen
CREATE TEMPORARY TABLE temp_verkaufsstatistik (
produkt_id INT,
verkaufsmenge INT,
umsatz DECIMAL(10,2),
INDEX (produkt_id)
);
INSERT INTO temp_verkaufsstatistik
SELECT
produkt_id,
SUM(menge),
SUM(betrag)
FROM verkaeufe
WHERE verkaufsdatum >= DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY)
GROUP BY
3. Indexoptimierung
ANALYZE TABLE produkte;
SHOW INDEX FROM produkte;
OPTIMIZE TABLE
Wartung und Administration
1. Backup-Strategien
mysqldump -u [user] -p [database] > backup.sql
mysqldump -u [user] -p [database] [table]
2. Monitoring
SHOW STATUS;
SHOW PROCESSLIST;
SELECT
table_name,
table_rows,
data_length/1024/1024 as data_size_mb,
index_length/1024/1024 as index_size_mb
FROM information_schema.tables
WHERE table_schema = DATABASE()
ORDER BY data_length DESC
Häufige Fragen
F: Optimiert der Generator die Abfragen automatisch für MySQL? A: Ja, alle generierten Abfragen sind speziell für MySQL optimiert.
F: Werden MySQL 8.0 Features unterstützt? A: Ja, wir unterstützen alle aktuellen MySQL-Funktionen.
Best Practices
Performanceoptimierung
Indexe richtig einsetzen
Abfragen analysieren
Cache effektiv nutzen
Partitionierung verwenden
Datenbankdesign
Normalisierung beachten
Datentypen optimieren
Constraints einsetzen
Beziehungen pflegen
Wartung
Regelmäßige Backups
Performance überwachen
Logs auswerten
Updates planen