SQL 语句判断记录是否存在(最简洁简单性能最优)
文中的 Sql 语句仅适用于 Sql Server。
Mysql 的话,需要使用 Mysql 中相对应的函数来替代 isnull 和 top
------------------------------------------------
今天查了下,发现网上的没有一个sql语句写的好的。
判断记录是否存在,要不是语句不够简洁,要不就是性能有很大问题。
我进行了优化后,最简洁简单性能最优的的sql语句,用来判断表中的记录是否存在:
select isnull((select top(1) 1 from tableName where conditions), 0)
结果为 1,则说明记录存在;结果为 0,则说明记录不存在。
网上的常见的有问题的语句:
错误1:
select COUNT(*) from tableName where conditions
count(*) 计算会对聚集索引进行扫描和计算,reads 特别多,特别是 cpu 资源占用极大。
错误2:
if exists (select * from tableName where conditions) select '1' else select '0'
这种方法稍微有点灵性,但是却很不简洁。
同时由于 select * 前面有 exists ,所以该语句并没有性能问题,只是语法不够简洁
本文禁止任何网站转载,严厉谴责那些蛀虫们。
本文首发于,博客园,请搜索:博客园 - 寻自己,查看原版文章
本文首发于,博客园,请搜索:博客园 - 寻自己,查看原版文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义