Skip to main content

sql-expert

Expert guidance for generating accurate, performant, and secure SQL queries. Focuses on schema-first prompting, index awareness, and handling complex joins/aggregations.

Informações da origem

Repositório
DOX69/agent-performance-hub
Última atividade na origem
17 de fevereiro de 2026 às 19:32
Idioma detectado do SKILL.md
inglês
Estrelas
0
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
sql-expert
description
Expert guidance for generating accurate, performant, and secure SQL queries. Focuses on schema-first prompting, index awareness, and handling complex joins/aggregations.
# SQL Expert Patterns ## Overview This skill provides professional mental models and patterns for **Text-to-SQL generation**. It ensures that AI agents generate SQL that is not only syntactically correct but also performant, secure, and aligned with the actual database schema. ## When to Use - **Data Retrieval Agents**: When building agents that answer questions from a database. - **Complex Reporting**: Generating queries involving multiple joins, window functions, or CTEs. - **Schema Migration**: Writing DDL statements to modify database structure. - **Performance Tuning**: Optimizing slow queries generated by ORMs or other tools. ## The Mental Shift: Natural Language vs. Relational Logic | Feature | Natural Language | Relational Logic (SQL) | | :--- | :--- | :--- | | **Ambiguity** | High ("Get the best users") | Zero (Specific columns, specific criteria) | | **Context** | Implicit | **Explicit** (Must know table/column names) | | **Operations** | Descriptive | **Set-based** (Joins, Unions, Intersections) | | **Order** | Chronological | **Logical** (FROM -> WHERE -> GROUP BY -> SELECT) | ## Core Design Patterns ### 1. Schema-First Context An agent cannot guess your schema. You must provide it explicitly. **Pattern:** Always include a compact schema definition in the prompt. - **Table Names** & **Column Names** (Crucial) - **Data Types** (Helps with quoting and casting) - **Foreign Keys** (Crucial for correct JOINs) **Example Prompt Fragment:** ```text Context: You are an expert SQL agent. Use the following schema: - users (id INT PK, email VARCHAR, created_at TIMESTAMP) - orders (id INT PK, user_id INT FK, total DECIMAL, status VARCHAR) - order_items (id INT PK, order_id INT FK, product_id INT) ``` ### 2. Constraint-Based Prompting Prevent common LLM mistakes by setting strict constraints. **Pattern:** - **No Markdown:** "Return only the raw SQL query. No markdown formatting." - **No Hallucination:** "Do not use columns that are not in the provided schema." - **Standard SQL:** "Use standard ANSI SQL unless specified otherwise (e.g., PostgreSQL specific)." ### 3. Performance Awareness (Index Usage) Agents often write "correct" SQL that kills database performance. **Guidelines:** - **Avoid `SELECT *`**: Always specify columns. `SELECT *` breaks index coverage and wastes bandwidth. - **SARGable Queries**: Ensure `WHERE` clauses can use indexes. - *Bad:* `WHERE YEAR(created_at) = 2023` (Function on column prevents index use) - *Good:* `WHERE created_at >= '2023-01-01' AND created_at < '2024-01-01'` - **JOIN Efficiency**: Prefer `INNER JOIN` over `LEFT JOIN` unless missing data is explicitly required. ### 4. Advanced Features (CTEs & Window Functions) For complex logic, avoid deep nesting of subqueries. **Pattern:** Use Common Table Expressions (CTEs) for readability. *Bad (Nested):* ```sql SELECT * FROM (SELECT user_id, count(*) as c FROM orders GROUP BY user_id) WHERE c > 5 ``` *Good (CTE):* ```sql WITH user_order_counts AS ( SELECT user_id, count(*) as order_count FROM orders GROUP BY user_id ) SELECT * FROM user_order_counts WHERE order_count > 5 ``` ### 5. Self-Correction Loop If an executed query fails, the agent must treat the error message as feedback. **Pattern:** 1. **Execute** generated SQL. 2. **Catch** Error (e.g., "Column 'usr_id' does not exist"). 3. **Re-prompt** with: "The previous query failed with error: [Error]. Fix the query using the schema provided." ## Expert Checklist Before executing generated SQL: - [ ] **Schema Validation:** Do all tables and columns exist in the context? - [ ] **Type Safety:** Are strings quoted? Are dates in the correct format? - [ ] **Injection Safety:** Are user inputs parameterized (if running in an app) or sanitized? - [ ] **Logic Check:** Does the `GROUP BY` include all non-aggregated columns? ## Common Anti-Patterns ❌ **Ambiguous Joins:** Joining tables without specifying the ON clause (implicit cross join). ❌ **Recursive CTEs without Limit:** Causing infinite loops. ❌ **Mixing Dialects:** Using `ILIKE` (Postgres) on MySQL (requires `LIKE`).
Ver no GitHub