Przejdź do treści
Biblioteka skilli
Dane i analityka · Budowanie i kod

fai-sql-optimization-skill

/fai-sql-optimization-skill

Optymalizuje zapytania SQL analizą planów wykonania, strojeniem indeksów, przepisywaniem zapytań i zarządzaniem statystykami w PostgreSQL, SQL Server lub MySQL.

Repozytorium
frootai ↗
Licencja
MIT
Ostatnia zmiana repozytorium
26.10.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
3
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 26.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Optymalizuje zapytania SQL analizą planów wykonania, strojeniem indeksów, przepisywaniem zapytań i zarządzaniem statystykami w PostgreSQL, SQL Server lub MySQL.

Oryginalny opis (EN)

Optimize SQL queries with execution plan analysis, index tuning, query rewriting, and statistics management. Use when diagnosing slow queries across PostgreSQL, SQL Server, or MySQL.

Jak działa

  1. When to Use
  2. Execution Plan Analysis
  3. Key Plan Red Flags
  4. Index Optimization
  5. Query Rewriting
  6. Statistics Management
  7. Troubleshooting
Sekcje z nagłówków SKILL.md, w oryginale · 98 linii, 406 słów
Podgląd SKILL.md
---
name: fai-sql-optimization-skill
description: |
  Optimize SQL queries with execution plan analysis, index tuning, query
  rewriting, and statistics management. Use when diagnosing slow queries
  across PostgreSQL, SQL Server, or MySQL.
---

# SQL Query Optimization

Diagnose and fix slow queries with execution plans, indexes, and rewrites.

## When to Use

- Queries exceeding latency SLOs
- High CPU or I/O from database operations
- Identifying missing or redundant indexes
- Tuning queries for AI application data access

---

## Execution Plan Analysis

```sql
-- PostgreSQL
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) SELECT ...;

-- SQL Server
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
-- Then run query, check Messages tab

-- MySQL
EXPLAIN FORMAT=TREE SELECT ...;
```

## Key Plan Red Flags

| Signal | Problem | Fix |
|--------|---------|-----|
| Seq Scan / Table Scan | Full table read | Add index on filter columns |
| Nested Loop (high rows) | N+1 join pattern | Consider Hash/Merge Join |
| Sort (external) | work_mem too low | Increase work_mem or add sorted index |
| Key Lookup | Non-covering index | Add INCLUDE columns |

## Index Optimization

```sql
-- Composite index for common query pattern
CREATE INDEX idx_conv_user_status ON conversations(user_id, status, created_at DESC);

-- Covering index (avoids key lookup)
CREATE INDEX idx_msg_conv_covering ON messages(conversation_id)
    INCLUDE (role, content, created_at);

-- Partial index (index only relevant rows)
CREATE INDEX idx_active_conv ON conversations(user_id)
    WHERE status = 'active';

-- Find unused indexes
SELECT indexrelname, idx_scan FROM pg_stat_user_indexes
WHERE idx_scan = 0 ORDER BY pg_relation_size(indexrelid) DESC;
```

## Query Rewriting

```sql
-- Bad: Correlated subquery
SELECT * FROM conversations c
WHERE (SELECT COUNT(*) FROM messages WHERE conversation_id = c.id) > 10;

-- Good: JOIN with HAVING
SELECT c.id, COUNT(m.id) FROM conversations c
JOIN messages m ON m.conversation_id = c.id
GROUP BY c.id HAVING COUNT(m.id) > 10;

-- Bad: OFFSET pagination
SELECT * FROM messages ORDER BY created_at LIMIT 20 OFFSET 50000;

-- Good: Keyset pagination
SELECT * FROM messages WHERE created_at < @last_seen
ORDER BY created_at DESC LIMIT 20;
```

## Statistics Management

```sql
-- PostgreSQL: Update table statistics
ANALYZE conversations;
ANALYZE messages;

-- SQL Server: Update statistics
UPDATE STATISTICS conversations;
UPDATE STATISTICS messages;
```

## Troubleshooting

| Issue | Cause | Fix |
|-------|-------|-----|
| Seq scan on indexed column | Statistics stale | Run ANALYZE |
| Slow with LIKE '%text%' | B-tree can't use leading wildcard | Use full-text search or GIN trigram |
| Join order wrong | Planner estimates off | Update statistics, consider join hints |
| Index not used | Type mismatch in WHERE | Ensure column and parameter types match |
Pliki w paczce (3)
  • SKILL.lean.md 3 KB
  • SKILL.md 3 KB
  • agents/openai.yaml 1 KB

Wersje

W bazie nie ma innych skilli o nazwie fai-sql-optimization-skill.

Migawka bazy z 28.10.2026 · wersja paczki c27f1e0a50ab (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 95sql-optimization
    Optymalizuje zapytania SQL: analiza planów EXPLAIN, strategie indeksów, przepisywanie zapytań i zapobieganie problemowi N+1 w PostgreSQL, MySQL, SQLite i innych bazach.
  • 100sql-pro
    Optymalizuje złożone zapytania SQL, projektuje schematy i rozwiązuje problemy wydajności w PostgreSQL, MySQL, SQL Server i Oracle.
  • 100sql-pro
    Optymalizuje złożone zapytania SQL, projektuje wydajne schematy baz i rozwiązuje problemy wydajności w PostgreSQL, MySQL, SQL Server i Oracle, ze strategiami indeksów i wzorcami hurtowni danych.
  • 100sql-expert
    Wspiera projektowanie, zapytania, optymalizację i administrację baz SQL w PostgreSQL, MySQL i SQL Server: indeksy, wydajność, transakcje i współbieżność.
  • 100sql-optimizer
    Analizuje i optymalizuje zapytania SQL: przyspiesza wolne zapytania, analizuje plany, dodaje indeksy, naprawia N+1 i przepisuje SQL dla PostgreSQL, MySQL i SQLite.
  • 100fai-sql-code-review-skill
    Przegląda kod SQL pod kątem poprawności, wydajności, bezpieczeństwa i utrzymywalności w PostgreSQL, SQL Server i MySQL, w PR i skryptach migracji baz.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.