002_add_maps_indexes.sql 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. -- Migration: Ajout d'index supplémentaires pour optimiser les performances
  2. -- Date: 2025-10-12
  3. -- Description: Index composites et fulltext pour améliorer les recherches
  4. -- Index pour la recherche fulltext sur le nom et la description
  5. -- Vérifier si l'index n'existe pas déjà
  6. SET @sql = (SELECT IF(
  7. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
  8. WHERE TABLE_SCHEMA = DATABASE()
  9. AND TABLE_NAME = 'maps'
  10. AND INDEX_NAME = 'idx_fulltext_name_description') = 0,
  11. 'ALTER TABLE `maps` ADD FULLTEXT INDEX `idx_fulltext_name_description` (`name`, `description`)',
  12. 'SELECT "Index idx_fulltext_name_description déjà existant" as message'
  13. ));
  14. PREPARE stmt FROM @sql;
  15. EXECUTE stmt;
  16. DEALLOCATE PREPARE stmt;
  17. -- Index pour les cartes récemment modifiées (si pas déjà existant)
  18. SET @sql = (SELECT IF(
  19. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
  20. WHERE TABLE_SCHEMA = DATABASE()
  21. AND TABLE_NAME = 'maps'
  22. AND INDEX_NAME = 'idx_updated_at') = 0,
  23. 'ALTER TABLE `maps` ADD INDEX `idx_updated_at` (`updated_at`)',
  24. 'SELECT "Index idx_updated_at déjà existant" as message'
  25. ));
  26. PREPARE stmt FROM @sql;
  27. EXECUTE stmt;
  28. DEALLOCATE PREPARE stmt;
  29. -- Index pour les dimensions (si pas déjà existant)
  30. SET @sql = (SELECT IF(
  31. (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
  32. WHERE TABLE_SCHEMA = DATABASE()
  33. AND TABLE_NAME = 'maps'
  34. AND INDEX_NAME = 'idx_dimensions') = 0,
  35. 'ALTER TABLE `maps` ADD INDEX `idx_dimensions` (`width`, `height`)',
  36. 'SELECT "Index idx_dimensions déjà existant" as message'
  37. ));
  38. PREPARE stmt FROM @sql;
  39. EXECUTE stmt;
  40. DEALLOCATE PREPARE stmt;