sql-patterns 是一份常见 SQL 模式的速查参考,适合在日常查询编写或代码审查时快速查阅。
用途:为常见 SQL 写法提供简明示例与对照表,触发词包括 sql patterns、cte example、window functions、sql join 等。
主要内容:
- CTE(公共表表达式):基础 WITH 用法与链式 CTE,后者结合过滤后的用户表与订单聚合表做 LEFT JOIN。
- 窗口函数速查表:ROW_NUMBER() 唯一连续编号;RANK() 有间断排名;DENSE_RANK() 无间断排名;LAG(col, n) 取前一行值;LEAD(col, n) 取后一行值;SUM() OVER 累计求和;AVG() OVER 移动平均。示例用 LAG 取前一日营收,并用 SUM() OVER 计算累计值。
- JOIN 对照:INNER JOIN 仅匹配行;LEFT JOIN 左表全部加匹配右表;RIGHT JOIN 右表全部加匹配左表;FULL JOIN 全部行、无匹配处为 NULL。
- 分页:OFFSET/LIMIT 写法简单,但大偏移较慢;keyset 分页用 WHERE id > 42 配合 ORDER BY 与 LIMIT,更快且可扩展。
- 索引速查: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(索引类型、覆盖索引与优化)。
限制:资料仅提供速查与示例,未说明具体数据库版本、性能基准、收费方式或平台支持;实际语法与优化效果需结合所用数据库验证。