sparrow-cli 0.4.0

A local-first Rust agent cockpit — route, run, replay, rewind
Documentation
# Skill: Optimize SQL

**Trigger:** optimise cette requête, slow query, requête lente, explain this query, sql optimization

**Description:** Analyse et optimisation de requêtes SQL. Détection des problèmes courants (N+1, index manquants, jointures inefficaces) et propositions d'amélioration.

## Body

1. **Analyse** : ils la requête. Utilise `EXPLAIN` ou `EXPLAIN ANALYZE` si disponible.
2. **Problèmes courants** :
   - **N+1 queries** : une requête dans une boucle → utiliser `JOIN` ou `IN (ids...)`
   - **Index manquants** : `WHERE` ou `JOIN` sur des colonnes non indexées
   - **SELECT \*** : ne sélectionner que les colonnes nécessaires
   - **Fonctions dans WHERE** : `WHERE DATE(created_at) = '2024-01-01'` → utiliser une plage `WHERE created_at >= ... AND created_at < ...`
   - **Subqueries corrélées** : préférer `JOIN` ou `EXISTS` bien indexé
   - **LIMIT sans ORDER BY** : résultats non déterministes
3. **Avant/Après** : montre la requête originale et la version optimisée
4. **Impact** : estime le gain (temps d'exécution, lignes scannées)

Exemple :
```sql
-- AVANT (N+1)
SELECT * FROM users;
-- Pour chaque user :
SELECT * FROM orders WHERE user_id = ?;

-- APRÈS (JOIN)
SELECT u.*, o.*
FROM users u
LEFT JOIN orders o ON o.user_id = u.id;

-- Index recommandé :
CREATE INDEX idx_orders_user_id ON orders(user_id);
```