
使用方式
关于
优化数据库性能,包括索引策略、查询调优、分区和连接池管理。
name: sql-ops description: "常用 SQL 模式快速参考,包括 CTE、窗口函数和索引策略。触发条件:sql patterns、cte example、window functions、sql join、index strategy、pagination sql。" license: MIT allowed-tools: "Read Write" metadata: author: claude-mods related-skills: postgres-ops, sqlite-ops
SQL 模式
常用 SQL 模式快速参考。
CTE(公用表表达式)
WITH active_users AS (
SELECT id, name, email
FROM users
WHERE status = 'active'
)
SELECT * FROM active_users WHERE created_at > '2024-01-01';
链式 CTE
WITH
active_users AS (
SELECT id, name FROM users WHERE status = 'active'
),
user_orders AS (
SELECT user_id, COUNT(*) as order_count
FROM orders GROUP BY user_id
)
SELECT u.name, COALESCE(o.order_count, 0) as orders
FROM active_users u
LEFT JOIN user_orders o ON u.id = o.user_id;
窗口函数(快速参考)
| 函数 | 用途 |
|----------|-----|
| ROW_NUMBER() | 唯一顺序编号 |
| RANK() | 有间隔的排名(1, 2, 2, 4) |
| DENSE_RANK() | 无间隔的排名(1, 2, 2, 3) |
| LAG(col, n) | 前一行的值 |
| LEAD(col, n) | 后一行的值 |
| SUM() OVER | 累计总和 |
| AVG() OVER | 移动平均 |
SELECT
date,
revenue,
LAG(revenue, 1) OVER (ORDER BY date) as prev_day,
SUM(revenue) OVER (ORDER BY date) as running_total
FROM daily_sales;
JOIN 参考
| 类型 | 返回结果 |
|------|---------|
| INNER JOIN | 仅匹配的行 |
| LEFT JOIN | 左表全部 + 右表匹配行 |
| RIGHT JOIN | 右表全部 + 左表匹配行 |
| FULL JOIN | 所有行,无匹配处为 NULL |
分页
-- OFFSET/LIMIT(简单,大偏移量时较慢)
SELECT * FROM products ORDER BY id LIMIT 20 OFFSET 40;
-- 键集分页(快速,可扩展)
SELECT * FROM products WHERE id > 42 ORDER BY id LIMIT 20;
索引快速参考
| 索引类型 | 最适用场景 | |------------|----------| | B-tree | 范围查询、ORDER BY | | Hash | 仅精确等值查询 | | GIN | 数组、JSONB、全文搜索 | | Covering | 避免回表查询 |
反模式
| 错误做法 | 正确做法 |
|---------|-----|
| SELECT * | 明确列出列名 |
| WHERE YEAR(date) = 2024 | WHERE date >= '2024-01-01' |
| NOT IN 含 NULL | 使用 NOT EXISTS |
| N+1 查询 | 使用 JOIN 或批量查询 |
附加资源
详细模式请加载:
./references/window-functions.md- 完整窗口函数模式./references/indexing-strategies.md- 索引类型、覆盖索引、优化
兼容工具
Claude CodeCursorGitHub Copilot
标签
数据工程

