Fügt Unterstützung für parallele Entwicklungsumgebungen hinzu und aktualisiert die Benutzeroberfläche. Neue Routen und Komponenten für Trainingsstatistiken implementiert. Fehlerbehebungen und Verbesserungen in der Benutzeroberfläche vorgenommen.
This commit is contained in:
123
backend/cleanupKeysAggressive.sql
Normal file
123
backend/cleanupKeysAggressive.sql
Normal file
@@ -0,0 +1,123 @@
|
||||
-- Aggressives Cleanup-Script - Entfernt alle überflüssigen INDEX
|
||||
-- Behält nur PRIMARY KEY und UNIQUE constraints
|
||||
|
||||
USE trainingsdiary;
|
||||
|
||||
-- 1. Status vor dem aggressiven Cleanup
|
||||
SELECT '=== STATUS VOR AGGRESSIVEM CLEANUP ===' as info;
|
||||
SELECT
|
||||
TABLE_NAME,
|
||||
COUNT(*) as key_count
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = 'trainingsdiary'
|
||||
GROUP BY TABLE_NAME
|
||||
ORDER BY key_count DESC;
|
||||
|
||||
-- 2. Alle INDEX der Problem-Tabellen anzeigen
|
||||
SELECT '=== MEMBER TABELLE INDEX ===' as info;
|
||||
SHOW INDEX FROM member;
|
||||
|
||||
SELECT '=== DIARY_TAGS TABELLE INDEX ===' as info;
|
||||
SHOW INDEX FROM diary_tags;
|
||||
|
||||
SELECT '=== SEASON TABELLE INDEX ===' as info;
|
||||
SHOW INDEX FROM season;
|
||||
|
||||
-- 3. Alle nicht-essentiellen INDEX entfernen
|
||||
-- Behalte nur: PRIMARY KEY, UNIQUE constraints, FOREIGN KEY
|
||||
|
||||
-- Member-Tabelle: Alle INDEX außer PRIMARY und UNIQUE entfernen
|
||||
SELECT '=== ENTFERNE ALLE ÜBERFLÜSSIGEN MEMBER INDEX ===' as info;
|
||||
|
||||
-- Alle INDEX außer PRIMARY entfernen (PRIMARY kann nicht gelöscht werden)
|
||||
-- Verwende SHOW INDEX um die echten INDEX-Namen zu sehen
|
||||
-- Dann entferne alle außer PRIMARY
|
||||
|
||||
-- Häufige überflüssige INDEX-Namen (alle außer PRIMARY)
|
||||
DROP INDEX IF EXISTS member_hashed_id_unique ON member;
|
||||
DROP INDEX IF EXISTS member_first_name_index ON member;
|
||||
DROP INDEX IF EXISTS member_last_name_index ON member;
|
||||
DROP INDEX IF EXISTS member_birth_date_index ON member;
|
||||
DROP INDEX IF EXISTS member_active_index ON member;
|
||||
DROP INDEX IF EXISTS member_created_at_index ON member;
|
||||
DROP INDEX IF EXISTS member_updated_at_index ON member;
|
||||
DROP INDEX IF EXISTS member_club_id_index ON member;
|
||||
DROP INDEX IF EXISTS member_hashed_id_index ON member;
|
||||
|
||||
-- Alternative INDEX-Namen
|
||||
DROP INDEX IF EXISTS idx_member_hashed_id ON member;
|
||||
DROP INDEX IF EXISTS idx_member_first_name ON member;
|
||||
DROP INDEX IF EXISTS idx_member_last_name ON member;
|
||||
DROP INDEX IF EXISTS idx_member_birth_date ON member;
|
||||
DROP INDEX IF EXISTS idx_member_active ON member;
|
||||
DROP INDEX IF EXISTS idx_member_created_at ON member;
|
||||
DROP INDEX IF EXISTS idx_member_updated_at ON member;
|
||||
DROP INDEX IF EXISTS idx_member_club_id ON member;
|
||||
|
||||
-- Diary_Tags-Tabelle: Alle überflüssigen INDEX entfernen
|
||||
SELECT '=== ENTFERNE ALLE ÜBERFLÜSSIGEN DIARY_TAGS INDEX ===' as info;
|
||||
|
||||
DROP INDEX IF EXISTS diary_tags_name_index ON diary_tags;
|
||||
DROP INDEX IF EXISTS diary_tags_created_at_index ON diary_tags;
|
||||
DROP INDEX IF EXISTS diary_tags_updated_at_index ON diary_tags;
|
||||
DROP INDEX IF EXISTS diary_tags_club_id_index ON diary_tags;
|
||||
|
||||
-- Alternative INDEX-Namen
|
||||
DROP INDEX IF EXISTS idx_diary_tags_name ON diary_tags;
|
||||
DROP INDEX IF EXISTS idx_diary_tags_created_at ON diary_tags;
|
||||
DROP INDEX IF EXISTS idx_diary_tags_updated_at ON diary_tags;
|
||||
DROP INDEX IF EXISTS idx_diary_tags_club_id ON diary_tags;
|
||||
|
||||
-- Season-Tabelle: Alle überflüssigen INDEX entfernen
|
||||
SELECT '=== ENTFERNE ALLE ÜBERFLÜSSIGEN SEASON INDEX ===' as info;
|
||||
|
||||
DROP INDEX IF EXISTS season_name_index ON season;
|
||||
DROP INDEX IF EXISTS season_start_date_index ON season;
|
||||
DROP INDEX IF EXISTS season_end_date_index ON season;
|
||||
DROP INDEX IF EXISTS season_created_at_index ON season;
|
||||
DROP INDEX IF EXISTS season_updated_at_index ON season;
|
||||
DROP INDEX IF EXISTS season_club_id_index ON season;
|
||||
|
||||
-- Alternative INDEX-Namen
|
||||
DROP INDEX IF EXISTS idx_season_name ON season;
|
||||
DROP INDEX IF EXISTS idx_season_start_date ON season;
|
||||
DROP INDEX IF EXISTS idx_season_end_date ON season;
|
||||
DROP INDEX IF EXISTS idx_season_created_at ON season;
|
||||
DROP INDEX IF EXISTS idx_season_updated_at ON season;
|
||||
DROP INDEX IF EXISTS idx_season_club_id ON season;
|
||||
|
||||
-- 4. Status nach dem aggressiven Cleanup
|
||||
SELECT '=== STATUS NACH AGGRESSIVEM CLEANUP ===' as info;
|
||||
SELECT
|
||||
TABLE_NAME,
|
||||
COUNT(*) as key_count
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = 'trainingsdiary'
|
||||
GROUP BY TABLE_NAME
|
||||
ORDER BY key_count DESC;
|
||||
|
||||
-- 5. Gesamtanzahl der Keys
|
||||
SELECT
|
||||
COUNT(*) as total_keys_after_aggressive_cleanup
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = 'trainingsdiary';
|
||||
|
||||
-- 6. Ziel: Jede Tabelle sollte nur 2-5 Keys haben
|
||||
SELECT '=== ZIEL: 2-5 KEYS PRO TABELLE ===' as info;
|
||||
SELECT
|
||||
TABLE_NAME,
|
||||
COUNT(*) as key_count,
|
||||
CASE
|
||||
WHEN COUNT(*) <= 5 THEN '✅ OK'
|
||||
WHEN COUNT(*) <= 10 THEN '⚠️ Zu viele'
|
||||
ELSE '❌ Viel zu viele'
|
||||
END as status
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = 'trainingsdiary'
|
||||
GROUP BY TABLE_NAME
|
||||
ORDER BY key_count DESC;
|
||||
|
||||
-- 7. Zusammenfassung
|
||||
SELECT '=== ZUSAMMENFASSUNG ===' as info;
|
||||
SELECT
|
||||
'Aggressives Cleanup abgeschlossen. Jede Tabelle sollte nur 2-5 Keys haben.' as message;
|
||||
Reference in New Issue
Block a user