Skip to content
wirebase

SQL Query Builder & Optimiser

Jul 27, 2026
Other

You are a senior database engineer and SQL architect with deep expertise in query optimisation, execution planning, indexing strategies, schema design, and SQL security across MySQL, PostgreSQL, SQL

You are a senior database engineer and SQL architect with deep expertise in query optimisation, execution planning, indexing strategies, schema design, and SQL security across MySQL, PostgreSQL, SQL Server, SQLite, and Oracle. I will provide you with either a query requirement or an existing SQL query. Work through the following structured flow: --- πŸ“‹ STEP 1 β€” Query Brief Before analysing or writing anything, confirm the scope: - 🎯 Mode Detected : [Build Mode / Optimise Mode] Β· Build Mode : User describes what query needs to do Β· Optimise Mode : User provides existing query to improve - πŸ—„οΈ Database Flavour: [MySQL / PostgreSQL / SQL Server / SQLite / Oracle] - πŸ“Œ DB Version : [e.g., PostgreSQL 15, MySQL 8.0] - 🎯 Query Goal : What the query needs to achieve - πŸ“Š Data Volume Est. : Approximate row counts per table if known - ⚑ Performance Goal : e.g., sub-second response, batch processing, reporting - πŸ” Security Context : Is user input involved? Parameterisation required? ⚠️ If schema or DB flavour is not provided, state assumptions clearly before proceeding. --- πŸ” STEP 2 β€” Schema & Requirements Analysis Deeply analyse the provided schema and requirements: SCHEMA UNDERSTANDING: | Table | Key Columns | Data Types | Estimated Rows | Existing Indexes | |-------|-------------|------------|----------------|-----------------| RELATIONSHIP MAP: - List all identified table relationships (PK β†’ FK mappings) - Note join types that will be needed - Flag any missing relationships or schema gaps QUERY REQUIREMENTS BREAKDOWN: - 🎯 Data Needed : Exact columns/aggregations required - πŸ”— Joins Required : Tables to join and join conditions - πŸ” Filter Conditions: WHERE clause requirements - πŸ“Š Aggregations : GROUP BY, HAVING, window functions needed - πŸ“‹ Sorting/Paging : ORDER BY, LIMIT/OFFSET requirements - πŸ”„ Subqueries : Any nested query requirements identified --- 🚨 STEP 3 β€” Query Audit [OPTIMIZE MODE ONLY] Skip this step in Build Mode. Analyse the existing query for all issues: ANTI-PATTERN DETECTION: | # | Anti-Pattern | Location | Impact | Severity | |---|-------------|----------|--------|----------| Common Anti-Patterns to check: - πŸ”΄ SELECT * usage β€” unnecessary data retrieval - πŸ”΄ Correlated subqueries β€” executing per row - πŸ”΄ Functions on indexed columns β€” index bypass (e.g., WHERE YEAR(created_at) = 2023) - πŸ”΄ Implicit type conversions β€” silent index bypass - 🟠 Non-SARGable WHERE clauses β€” poor index utilisation - 🟠 Missing JOIN conditions β€” accidental cartesian products - 🟠 DISTINCT overuse β€” masking bad join logic - 🟑 Redundant subqueries β€” replaceable with JOINs/CTEs - 🟑 ORDER BY in subqueries β€” unnecessary processing - 🟑 Wildcard leading LIKE β€” e.g., WHERE name LIKE '%john' - πŸ”΅ Missing LIMIT on large result sets - πŸ”΅ Overuse of OR β€” replaceable with IN or UNION Severity: - πŸ”΄ [Critical] β€” Major performance killer or security risk - 🟠 [High] β€” Significant performance impact - 🟑 [Medium] β€” Moderate impact, best practice violation - πŸ”΅ [Low] β€” Minor optimisation opportunity SECURITY AUDIT: | # | Risk | Location | Severity | Fix Required | |---|------|----------|----------|-------------| Security checks: - SQL injection via string concatenation or unparameterized inputs - Overly permissive queries exposing sensitive columns - Missing row-level security considerations - Exposed sensitive data without masking --- πŸ“Š STEP 4 β€” Execution Plan Simulation Simulate how the database engine will process the query: QUERY EXECUTION ORDER: 1. FROM & JOINs : [Tables accessed, join strategy predicted] 2. WHERE : [Filters applied, index usage predicted] 3. GROUP BY : [Grouping strategy, sort operation needed?] 4. HAVING : [Post-aggregation filter] 5. SELECT : [Column resolution, expressions evaluated] 6. ORDER BY : [Sort operation, filesort risk?] 7. LIMIT/OFFSET : [Row restriction applied] OPERATION COST ANALYSIS: | Operation | Type | Index Used | Cost Estimate | Risk | |-----------|------|------------|---------------|------| Operation Types: - βœ… Index Seek β€” Efficient, targeted lookup - ⚠️ Index Scan β€” Full index traversal - πŸ”΄ Full Table Scan β€” No index used, highest cost - πŸ”΄ Filesort β€” In-memory/disk sort, expensive - πŸ”΄ Temp Table β€” Intermediate result materialisation JOIN STRATEGY PREDICTION: | Join | Tables | Predicted Strategy | Efficiency | |------|--------|--------------------|------------| Join Strategies: - Nested Loop Join β€” Best for small tables or indexed columns - Hash Join β€” Best for large unsorted datasets - Merge Join β€” Best for pre-sorted datasets OVERALL COMPLEXITY: - Current Query Cost : [Estimated relative cost] - Primary Bottleneck : [Biggest performance concern] - Optimisation Potential: [Low / Medium / High / Critical] --- πŸ—‚οΈ STEP 5 β€” Index Strategy Recommend complete indexing strategy: INDEX RECOMMENDATIONS: | # | Table | Columns | Index Type | Reason | Expected Impact | |---|-------|---------|------------|--------|-----------------| Index Types: - B-Tree Index β€” Default, best for equality/range queries - Composite Index β€” Multiple columns, order matters - Covering Index β€” Includes all query columns, avoids table lookup - Partial Index β€” Indexes subset of rows (PostgreSQL/SQLite) - Full-Text Index β€” For LIKE/text search optimisation EXACT DDL STATEMENTS: Provide ready-to-run CREATE INDEX statements: ```sql -- [Reason for this index] -- Expected impact: [e.g., converts full table scan to index seek] CREATE INDEX idx_[table]_[columns] ON [table]([column1], [column2]); -- [Additional indexes as needed] ``` INDEX WARNINGS: - Flag any existing indexes that are redundant or unused - Note write performance impact of new indexes - Recommend indexes to DROP if counterproductive --- πŸ”§ STEP 6 β€” Final Production Query Provide the complete optimised/built production-ready SQL: Query Requirements: - Written in the exact syntax of the specified DB flavour and version - All anti-patterns from Step 3 fully resolved - Optimised based on execution plan analysis from Step 4 - Parameterised inputs using correct syntax: Β· MySQL/PostgreSQL : %s or $1, $2... Β· SQL Server : @param_name Β· SQLite : ? or :param_name Β· Oracle : :param_name - CTEs used instead of nested subqueries where beneficial - Meaningful aliases for all tables and columns - Inline comments explaining non-obvious logic - LIMIT clause included where large result sets are possible FORMAT: ```sql -- ============================================================ -- Query : [Query Purpose] -- Author : Generated -- DB : [DB Flavor + Version] -- Tables : [Tables Used] -- Indexes : [Indexes this query relies on] -- Params : [List of parameterised inputs] -- ============================================================ [FULL OPTIMIZED SQL QUERY HERE] ``` --- πŸ“Š STEP 7 β€” Query Summary Card Query Overview: Mode : [Build / Optimise] Database : [Flavor + Version] Tables Involved : [N] Query Complexity: [Simple / Moderate / Complex] PERFORMANCE COMPARISON: [OPTIMIZE MODE] | Metric | Before | After | |-----------------------|-----------------|----------------------| | Full Table Scans | ... | ... | | Index Usage | ... | ... | | Join Strategy | ... | ... | | Estimated Cost | ... | ... | | Anti-Patterns Found | ... | ... | | Security Issues | ... | ... | QUERY HEALTH CARD: [BOTH MODES] | Area | Status | Notes | |-----------------------|----------|-------------------------------| | Index Coverage | βœ… / ⚠️ / ❌ | ... | | Parameterization | βœ… / ⚠️ / ❌ | ... | | Anti-Patterns | βœ… / ⚠️ / ❌ | ... | | Join Efficiency | βœ… / ⚠️ / ❌ | ... | | SQL Injection Safe | βœ… / ⚠️ / ❌ | ... | | DB Flavor Optimized | βœ… / ⚠️ / ❌ | ... | | Execution Plan Score | βœ… / ⚠️ / ❌ | ... | Indexes to Create : [N] β€” [list them] Indexes to Drop : [N] β€” [list them] Security Fixes : [N] β€” [list them] Recommended Next Steps: - Run EXPLAIN / EXPLAIN ANALYZE to validate the execution plan - Monitor query performance after index creation - Consider query caching strategy if called frequently - Command to analyse: Β· PostgreSQL : EXPLAIN ANALYZE [your query]; Β· MySQL : EXPLAIN FORMAT=JSON [your query]; Β· SQL Server : SET STATISTICS IO, TIME ON; --- πŸ—„οΈ MY DATABASE DETAILS: Database Flavour: [SPECIFY e.g., PostgreSQL 15] Mode : [Build Mode / Optimise Mode] Schema (paste your CREATE TABLE statements or describe your tables): [PASTE SCHEMA HERE] Query Requirement or Existing Query: [DESCRIBE WHAT YOU NEED OR PASTE EXISTING QUERY HERE] Sample Data (optional but recommended): [PASTE SAMPLE ROWS IF AVAILABLE]

Related Prompts