Free Tool

SQL Slow Query Analyzer

Paste your query. Get an instant diagnosis across 100 rules — full table scans, missing indexes, function abuse, bad joins, and more. No sign-up.

100 detection rules PostgreSQL, MySQL, Oracle, SQL Server Runs in your browser — nothing sent to a server

Supports PostgreSQL, MySQL, Oracle, SQL Server. Separate multiple queries with ;

What this tool checks

100 rules across 11 categories. Each finding includes what's wrong, why it's slow, and the exact fix.

SELECT Clause

10 rules

SELECT *, DISTINCT, missing LIMIT, large IN lists

WHERE Clause

15 rules

Full scans, NULL traps, OR conditions, implicit casts

Functions in WHERE

14 rules

LOWER(), DATE(), EXTRACT(), CAST() killing indexes

JOINs

8 rules

Cartesian products, missing ON, function in JOIN condition

Subqueries

7 rules

Correlated subqueries, NOT IN NULL trap, ORDER BY inside subquery

ORDER BY / GROUP BY

8 rules

ORDER BY RANDOM(), OFFSET pagination, HAVING vs WHERE

DML Safety

6 rules

UPDATE/DELETE without WHERE, INSERT without column list

Data Patterns

8 rules

ILIKE, JSONB unindexed, CSV in columns, FLOAT for money

CTEs & Advanced

5 rules

Recursive CTE without limit, many CTEs, window functions

Performance Patterns

12 rules

Multiple aggregations, correlated updates, implicit type casts

Code Quality

7 rules

Long queries, no aliases, duplicate conditions, missing schema

More being added

Ongoing

Rules are updated as new patterns are identified

Frequently Asked Questions

How do I find slow SQL queries?

Enable your database's slow query log (PostgreSQL: log_min_duration_statement, MySQL: slow_query_log), then paste the offending query into this analyzer. It checks for full table scans, missing indexes, function abuse in WHERE clauses, and dangerous JOIN patterns across 100 rules.

What causes a full table scan in SQL?

A full table scan happens when the database reads every row instead of using an index. Common causes: no index on the filtered column, a function wrapping the column in the WHERE clause (e.g. WHERE LOWER(email) = ?), implicit type casting, or a LIKE pattern starting with a wildcard (%value).

How do I fix a slow SQL query without changing the schema?

First add covering indexes on columns used in WHERE, JOIN ON, and ORDER BY clauses. Then rewrite correlated subqueries as JOINs, replace SELECT * with specific columns, and move any functions off the filtered column so the index can be used. These changes require no schema migration.

Static analysis found issues. A live audit fixes them.

We connect to your database, run EXPLAIN ANALYZE on your actual query load, and deliver a written fix plan within 48 hours. No commitment required.