成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL查找是否"存在",別再用count了

運維 數據庫運維
根據某一條件從數據庫表中查詢『有』與『沒有』,只有兩種狀態,那為什么在寫 SQL 的時候,還要 SELECT COUNT(*) 呢?

根據某一條件從數據庫表中查詢『有』與『沒有』,只有兩種狀態,那為什么在寫 SQL 的時候,還要 SELECT COUNT(*) 呢?

[[355458]]

圖片來自 Pexels

無論是剛入道的程序員新星,還是精湛沙場多年的程序員老白,都是一如既往的 COUNT。

目前多數人的寫法

多次 REVIEW 代碼時,發現如現現象:業務代碼中,需要根據一個或多個條件,查詢是否存在記錄,不關心有多少條記錄。

普遍的 SQL 及代碼寫法如下:

  1. ##### SQL寫法: 
  2. SELECT count(*) FROM table WHERE a = 1 AND b = 2 
  3.  
  4. ##### Java寫法: 
  5. int nums = xxDao.countXxxxByXxx(params); 
  6. if ( nums > 0 ) { 
  7.     //當存在時,執行這里的代碼 
  8. else { 
  9.     //當不存在時,執行這里的代碼 

是不是感覺很 OK,沒有什么問題?

優化方案

推薦寫法如下:

  1. ##### SQL寫法: 
  2. SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1 
  3. ##### Java寫法: 
  4. Integer exist = xxDao.existXxxxByXxx(params); 
  5. if ( exist != NULL ) { 
  6. //當存在時,執行這里的代碼 
  7. else { 
  8. //當不存在時,執行這里的代碼 

SQL 不再使用 COUNT,而是改用 LIMIT 1,讓數據庫查詢時遇到一條就返回,不要再繼續查找還有多少條了。

業務代碼中直接判斷是否非空即可!

根據查詢條件查出來的條數越多,性能提升的越明顯,在某些情況下,還可以減少聯合索引的創建。

總結

COUNT() 有兩個非常不同的作用:

它可以統計某個列值的數量,也可以統計行數。在統計列值時要求列值是非空的(不統計 NULL)。

如果在 COUNT() 的括號中定了列或者列表達式,則統計的就是這個表達式有值的結果數。......COUNT() 的另一個作用是統計結果集的行數。當 MySQL 確認括號內的表達式值不可能為空時,實際上就是在統計行數。

最簡單的就是當我們使用 COUNT(*) 的時候,這種情況下通配符 * 并不像我們猜想的那樣擴展成所有的列,實際上,他會忽略所有列而直接統計所有的行數。

——《高性能MySQL》

不管怎樣,我們判斷是否存在。只需確定,有和無,而不是,無還是有多少!在有的情況下,直接返回,而不需要繼續統計行數!

巧妙的使用 LIMIT 1,獲得更高效率,尤其是在某些復雜且不規范的語句中效果更明顯!

作者:程序猿囧途

編輯:陶家龍

出處:toutiao.com/i6826511837840802315

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2020-07-28 17:08:43

SQL數據庫

2025-05-19 04:00:00

2024-03-14 08:15:18

COUNT(*)數據庫LIMIT 1?

2020-12-02 11:18:50

print調試代碼Python

2020-12-04 10:05:00

Pythonprint代碼

2021-06-09 06:41:11

OFFSETLIMIT分頁

2021-01-29 11:05:50

PrintPython代碼

2020-12-15 08:06:45

waitnotifyCondition

2023-10-26 16:33:59

float 布局前段CSS

2021-05-25 09:30:44

kill -9Linux kill -9 pid

2020-07-17 07:15:38

數據庫ID代碼

2022-01-27 07:48:37

虛擬項目Django

2024-12-26 07:47:20

2024-06-12 13:54:37

編程語言字符串代碼

2019-03-12 14:48:29

路由器XBOXPS4

2022-10-27 21:34:28

數據庫機器學習架構

2022-03-10 10:12:04

自動化腳本Bash

2025-05-15 03:00:00

2023-09-08 08:35:42

層疊樣式表CSS

2023-06-26 08:20:02

openapi格式注解
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩三级在线观看 | 精品一二区| 天天躁日日躁狠狠很躁 | 亚洲国产成人精品女人久久久 | 在线不卡视频 | 91麻豆精品国产91久久久久久 | 国产农村妇女毛片精品久久麻豆 | 国产美女一区二区三区 | 久久夜色精品国产 | 欧美激情在线精品一区二区三区 | 日日草夜夜草 | 日韩一级黄色片 | 国产国产精品 | 国产一区二区在线视频 | 我要看黄色录像一级片 | www.国产精| 国产精品成人品 | 国产99久久精品一区二区永久免费 | 国产精品国产精品国产专区不卡 | 久久久久亚洲精品 | 成人亚洲性情网站www在线观看 | 伊人狠狠操| 日韩精品视频在线 | 91视频三区 | 色噜噜亚洲男人的天堂 | 国产在线视频在线观看 | 国产成人精品a视频一区www | 久久精品久久精品久久精品 | 欧美精品一级 | 97色在线观看免费视频 | 日本精品一区二区三区视频 | 日韩欧美在线观看一区 | 99热这里有精品 | 一级黄色毛片 | 99久久婷婷国产综合精品电影 | 国产91在线 | 中日 | 性一交一乱一伦视频免费观看 | 综合自拍 | 久久久人 | 日韩欧美三区 | 午夜视频一区 |