0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SQL告别count改用LIMIT 1

数据分析与开发 来源:今日头条 作者:程序猿囧途 2021-07-26 10:57 次阅读

根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count

目前多数人的写法

多次REVIEW代码时,发现如现现象:业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下

##### SQL写法:

SELECT count(*) FROM table WHERE a = 1 AND b = 2

##### Java写法:

int nums = xxDao.countXxxxByXxx(params);

if ( nums 》 0 ) {

//当存在时,执行这里的代码

} else {

//当不存在时,执行这里的代码

}

是不是感觉很OK,没有什么问题

优化方案

推荐写法如下:

SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1

##### Java写法:

Integer exist = xxDao.existXxxxByXxx(params);

if ( exist != NULL ) {

//当存在时,执行这里的代码

} else {

//当不存在时,执行这里的代码

}

SQL不再使用count,而是改用LIMIT 1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了业务代码中直接判断是否非空即可

总结

根据查询条件查出来的条数越多,性能提升的越明显,在某些情况下,还可以减少联合索引的创建。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SQL
    SQL
    +关注

    关注

    1

    文章

    777

    浏览量

    44408

原文标题:SQL 查找是否"存在",别再 count 了!

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    如何一眼定位SQL的代码来源:一款SQL染色标记的简易MyBatis插件

    作者:京东物流 郭忠强 导语 本文分析了后端研发和运维在日常工作中所面临的线上SQL定位排查痛点,基于姓名贴的灵感,设计和开发了一款SQL染色标记的MyBatis插件。该插件轻量高效,对业务代码无
    的头像 发表于 03-05 11:36 137次阅读
    如何一眼定位<b class='flag-5'>SQL</b>的代码来源:一款<b class='flag-5'>SQL</b>染色标记的简易MyBatis插件

    count_th_tl = ((u16)TH1 &lt;&lt; 8) + (u16)TL1;

    //void T1_RunTask(void) //{ // u32 count_th_tl = 0; // count_th_tl = ((u16)TH1 << 8
    发表于 02-01 11:51

    Devart: dbForge Compare Bundle for SQL Server—比较SQL数据库最简单、最准确的方法

      dbForge Compare Bundle For SQL Server:包含两个工具,可帮助您节省用于手动数据库比较的 70% 的时间 dbForge数据比较 帮助检测和分析实时SQL数据库
    的头像 发表于 01-17 11:35 211次阅读

    dbForge Studio For SQL Server:用于有效开发的最佳SQL Server集成开发环境

    dbForge Studio For SQL Server:用于有效开发的最佳SQL Server集成开发环境 SQL编码助手 SQL代码分析 查询分析器 可视化查询生成器 数据和模式
    的头像 发表于 01-16 10:36 265次阅读

    浅谈SQL优化小技巧

    作者:京东零售 王军 回顾:MySQL的执行过程回顾 MySQL的执行过程,帮助 介绍 如何进行sql优化。 (1)客户端发送一条查询语句到服务器; (2)服务器先查询缓存,如果命中缓存,则立即返回
    的头像 发表于 12-25 09:59 630次阅读

    verilog计数器代码为什么要使用这句话if (count===8\'bxxxxxxxx)count=8\'b0000_0000;

    ; else if(count==8\'b1111_1111) count<=8\'b0000_0000; else count<=count+1; end endmodu
    发表于 12-21 14:49

    SQL错误代码及解决方案

    SQL数据库开发和管理中,常见的错误代码及其解决方案可以归纳如下: 一、语法错误(Syntax Errors) 错误代码 :无特定代码,但通常会在错误消息中明确指出是语法错误。 原因 :SQL语句
    的头像 发表于 11-19 10:21 4206次阅读

    常用SQL函数及其用法

    SQL 函数及其用法: 一、聚合函数(Aggregate Functions) 聚合函数对一组值执行计算,并返回单个值。 COUNT() 用途 :返回匹配指定条件的行数。 示例 : SELECT
    的头像 发表于 11-19 10:18 640次阅读

    SQL与NoSQL的区别

    在信息技术领域,数据库是存储和管理数据的核心组件。随着互联网的发展和大数据时代的到来,对数据库的需求也在不断变化。SQL和NoSQL作为两种主流的数据库管理系统,各自有着独特的优势和应用场
    的头像 发表于 11-19 10:15 304次阅读

    大数据从业者必知必会的Hive SQL调优技巧

    不尽人意。本文针对Hive SQL的性能优化进行深入研究,提出了一系列可行的调优方案,并给出了相应的优化案例和优化前后的SQL代码。通过合理的优化策略和技巧,能够显著提升Hive SQL的执行效率和响应速度。 关键词: Hive
    的头像 发表于 09-24 13:30 398次阅读

    IP 地址在 SQL 注入攻击中的作用及防范策略

    数据库在各个领域的逐步应用,其安全性也备受关注。SQL 注入攻击作为一种常见的数据库攻击手段,给网络安全带来了巨大威胁。今天我们来聊一聊SQL 注入攻击的基本知识。 SQL 注入攻击的基本原理
    的头像 发表于 08-05 17:36 420次阅读

    恒讯科技分析:sql数据库怎么用?

    SQL数据库的使用通常包括以下几个基本步骤: 1、选择数据库系统: 选择适合您需求的SQL数据库系统,如MySQL、PostgreSQL、Microsoft SQL Server、SQ
    的头像 发表于 07-15 14:40 445次阅读

    什么是 Flink SQL 解决不了的问题?

    简介 在实时数据开发过程中,大家经常会用 Flink SQL 或者 Flink DataStream API 来做数据加工。通常情况下选用2者都能加工出想要的数据,但是总会有 Flink SQL
    的头像 发表于 07-09 20:50 428次阅读

    请问stm32cubeide怎么取ImageER_IROM1Limit?

    MDK的时候取image大小是用\"ImageER_IROM1Limit\"这样的,但是stm32cubeide用不了,大家有什么办法吗?谢谢
    发表于 05-29 06:03

    SQL全外连接剖析

    SQL中的全外连接是什么? 在SQL中,FULLOUTERJOIN组合左外连接和右外连接的结果,并返回连接子句两侧表中的所有(匹配或不匹配)行。接下面sojson给大家详细讲解。   图解:SQL
    的头像 发表于 03-19 18:28 2368次阅读
    <b class='flag-5'>SQL</b>全外连接剖析