SQLコードのセキュリティ、パフォーマンス、保守性を包括的にレビューする。MySQL、PostgreSQL、SQL Server、Oracle対応。
対象のSQLコード ${selection}(未選択の場合はプロジェクト全体)に対して、セキュリティ、パフォーマンス、保守性の観点から包括的なレビューを実施してください。
-- ❌ 危険: SQLインジェクション脆弱性
query = "SELECT * FROM users WHERE id = " + userInput;
-- ✅ 安全: パラメータ化クエリ
-- PostgreSQL/MySQL
PREPARE stmt FROM 'SELECT * FROM users WHERE id = ?';
EXECUTE stmt USING @user_id;
-- SQL Server
EXEC sp_executesql N'SELECT * FROM users WHERE id = @id', N'@id INT', @id = @user_id;
-- ❌ 非効率なクエリパターン
SELECT DISTINCT u.*
FROM users u, orders o, products p
WHERE u.id = o.user_id
AND o.product_id = p.id
AND YEAR(o.order_date) = 2024;
-- ✅ 最適化された構造
SELECT u.id, u.name, u.email
FROM users u
INNER JOIN orders o ON u.id = o.user_id
WHERE o.order_date >= '2024-01-01'
AND o.order_date < '2025-01-01';
-- ❌ 悪い例: 可読性の低いフォーマット
select u.id,u.name,o.total from users u left join orders o on u.id=o.user_id where u.status='active';
-- ✅ 良い例: 読みやすいフォーマット
SELECT u.id,
u.name,
o.total
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.status = 'active'
AND o.order_date >= '2024-01-01';