- 博客(9)
- 收藏
- 关注
原创 SQL语法之分析函数使用指南与注意事项
SQL分析函数摘要:本文介绍三类分析函数用法。1)聚合类(SUM,AVG等):OVER()整体计算,PARTITION BY分组,ORDER BY实现累计统计;2)排名类(RANK,ROW_NUMBER等):必须含ORDER BY,可选PARTITION BY;3)位移类(LAG,LEAD等):必须ORDER BY确定顺序。通过销售数据示例演示了各函数应用场景,特别强调分析函数内ORDER BY仅影响计算顺序,不改变结果展示顺序。最后指出窗口函数还支持ROWS/RANGE BETWEEN等高级用法。
2025-08-23 14:10:01
274
原创 SQL语法之exists和in的区别
摘要:EXISTS和IN的核心区别在于,EXISTS检查子查询是否返回记录(布尔判断),适用于子查询结果集大而主查询结果集小的场景;IN检查字段值是否在子查询列表中,适用于相反情况。性能对比显示,当子查询数据量大时,EXISTS(依赖索引)明显优于IN(需生成临时列表)。实际建议:大数据量下优先使用EXISTS,特别是主查询筛选少量数据而关联大表时;仅当子查询结果集很小时考虑IN。注意确保关联字段有索引,且EXISTS支持更复杂的条件查询。
2025-08-07 22:40:57
409
原创 SQL优化之常用语句的调优
SQL语句优化技巧摘要:本文总结了10个SQL优化要点,包括避免索引失效、使用commit提交、用EXISTS替代IN/join、临时表代替子查询、GROUPBY替代DISTINCT、使用内置函数、避免SELECT等。通过一个多表查询案例对比优化前后SQL:原SQL存在SELECT、笛卡尔积、NOTIN低效等问题;优化后使用WITHAS临时表、EXISTS替代JOIN、INNERJOIN避免笛卡尔积、DECODE函数等技巧,性能可提升5-10倍。验证执行计划可确认优化效果,重点关注全表扫描和临时表使用情况。
2025-08-04 20:17:51
421
原创 面试SQL题目之连续性登录问题
本文介绍了用户连续性登录问题的SQL方法。通过创建包含用户ID和登录时间的表,并插入测试数据,展示了如何计算用户的最早、最晚登录时间及连续登录天数。关键思路是:将登录日期减去行号得到连续登录标识,相同标识的日期即为连续登录日期。核心SQL使用窗口函数ROW_NUMBER()配合日期运算,最后按用户分组统计起始日期、结束日期和连续天数。该方法能有效识别用户连续登录行为,适用于常见的用户活跃度分析场景。
2025-07-31 20:51:16
209
原创 delete和truncate的区别,和drop又有什么区别?
数据库删除操作差异:DELETE是DML操作,可回滚并支持WHERE条件筛选,但速度最慢;TRUNCATE是DDL操作,快速清空表数据且不可回滚,会重置自增列;DROP也是DDL操作,直接删除整个表结构及数据,速度最快但不可恢复。三者执行速度依次递增,风险也随之增大,使用需谨慎。尤其注意DROP操作可能导致'删库跑路'的严重后果,重大操作前务必备份数据。
2025-07-27 14:29:28
762
原创 SQL语句执行顺序总结及大概示例
不同数据库的逻辑执行顺序存在差异:Oracle执行顺序为FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY;Hive则是FROM→WHERE→GROUP BY→SELECT→HAVING→ORDER BY;PostgreSQL和MySQL类似,都包含表关联操作(JOIN在WHERE前),但PostgreSQL支持LIMIT/OFFSET。主要区别体现在HAVING的位置(Hive在SELECT后)、LIMIT支持度(Oracle不支持)以及DISTINCT的执行时机。
2025-07-26 14:25:37
490
原创 SQL语法之union和union all 的区别?
摘要: 本文比较了SQL中UNION ALL和UNION操作的差异。UNION ALL直接合并两表数据,保留所有重复行,效率较高。而UNION会基于所有列值进行全局去重,需额外排序操作,效率较低。关键区别在于:UNION ALL保留全部数据,UNION自动去重但性能较差。使用时需确保合并表的列数、数据类型一致,结果列名取自第一个SELECT语句。实际工作中推荐优先使用UNION ALL
2025-07-24 23:39:06
1009
原创 SQL执行优化之连接查询时,条件写在where后面和写在on后面的区别
SQL连接查询中ON与WHERE条件的关键区别:ON条件定义表间关联逻辑,保留左表所有记录,右表不匹配时补NULL(如第一条SQL结果同时包含c/d和a/b数据);WHERE条件对最终结果全局过滤,不满足条件的行会被剔除(如第二条SQL仅保留a/b数据)。实际应用中,需根据需求选择:若需保留主表全部数据使用ON条件过滤右表,若需筛选最终结果集则使用WHERE条件。典型场景包括历史数据比对、数据质量检查等。
2025-07-23 20:33:51
273
原创 SQL优化小技巧之查询数据是否存在的优化
如果你的数据库目标有非常多的数据,按照原来的做法会查询全部后统计出来,而优化后的SQL只查询到第一条就结束了。相当于你需要寻找操作上的跑道是否有标记的点,你原来的做法是在操场上跑一圈查看地面上所有有标记的点,再统计求和得出结果;而优化后的做法是直接跑起来,找到第一个标记的点就可以得到结果。,让数据库查询时遇到一条就返回结果,不要再继续查找还有多少条了。
2025-07-19 16:23:31
228
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅