如何在SQL Select语句中插入默认值?现有实现求优化
优化在查询结果顶部添加默认“All”行的SQL方案
嘿,你的现有实现是能达到需求的,但确实有更简洁高效的优化方案,不用绕弯子创建临时表~
更优方案:直接用UNION ALL合并结果
你可以跳过表变量的定义和两次插入操作,直接把默认行和原表的查询结果合并,代码更简洁,性能也更好:
SELECT 'All' AS SiteID, 'All' AS SiteName UNION ALL SELECT DISTINCT SiteID, SiteName FROM Sitetbl
为什么这个方案更好?
- 代码更简洁直观:省去了临时表的创建和插入步骤,逻辑一目了然,维护起来更方便
- 性能更优:
UNION ALL不会做重复值检查(这里默认的"All"行和原表数据几乎不可能重复),比先插入临时表再查询的方式减少了内存开销和额外的IO操作,数据量越大优势越明显 - 灵活性强:如果担心原表中恰好存在
('All','All')的记录,只需要把UNION ALL改成UNION即可自动去重(不过这种业务场景很少见,优先用UNION ALL)
内容的提问来源于stack exchange,提问作者Kumee
相关产品推荐
相关产品推荐

