Analyze a T-SQL query for optimization opportunities, SARGability issues, and index recommendations
Analyzes T-SQL queries for SARGability issues, implicit conversions, and provides index recommendations.
/plugin marketplace add JosiahSiegel/claude-plugin-marketplace/plugin install tsql-master@claude-plugin-marketplace[paste query or file path]Systematically analyze a T-SQL query for optimization opportunities.
If user provided a file path:
# Read the query from file
cat "$1"
If user pasted query directly, use that.
Check for non-SARGable patterns:
| Pattern | Issue | Fix |
|---|---|---|
YEAR(DateCol) = 2024 | Function on column | DateCol >= '2024-01-01' AND DateCol < '2025-01-01' |
LEFT(Col, 3) = 'ABC' | Function on column | Col LIKE 'ABC%' |
Col * 1.1 > 100 | Arithmetic on column | Col > 100 / 1.1 |
ISNULL(Col, 0) = 5 | Function on column | (Col = 5 OR Col IS NULL) |
@Var = Col | Variable on left | Col = @Var |
Look for potential type mismatches:
For each JOIN:
Check for:
Based on:
Suggest CREATE INDEX statement.
================================
Query Analysis Report
================================
QUERY:
[First 200 chars of query...]
SARGABILITY ISSUES:
[ ] WHERE YEAR(OrderDate) = 2024
→ Change to: WHERE OrderDate >= '2024-01-01' AND OrderDate < '2025-01-01'
IMPLICIT CONVERSIONS:
[ ] Line 5: VarcharColumn = 123
→ Change to: VarcharColumn = '123'
JOIN OPTIMIZATION:
[✓] CustomerID join column should have index
[ ] Consider EXISTS instead of IN for large subquery
INDEX RECOMMENDATIONS:
CREATE NONCLUSTERED INDEX IX_Orders_CustomerDate
ON Orders(CustomerID, OrderDate)
INCLUDE (Amount, Status);
ESTIMATED IMPACT: High
================================
# Analyze pasted query
/analyze-query SELECT * FROM Orders WHERE YEAR(OrderDate) = 2024
# Analyze query from file
/analyze-query queries/slow_report.sql