根據(jù)某一條件從數(shù)據(jù)庫(kù)表中查詢 『有』與『沒有』,只有兩種狀態(tài),那為什么在寫SQL的時(shí)候,還要select count(*) 呢?
無論是剛?cè)氲赖?a href="http://ttokpm.com/v/tag/1730/" target="_blank">程序員新星,還是精湛沙場(chǎng)多年的程序員老白,都是一如既往的count.
目前多數(shù)人的寫法
多次 review 代碼時(shí),發(fā)現(xiàn)如現(xiàn)現(xiàn)象:
業(yè)務(wù)代碼中,需要根據(jù)一個(gè)或多個(gè)條件,查詢是否存在記錄,不關(guān)心有多少條記錄。普遍的SQL及代碼寫法如下
SQL寫法:
Java寫法:
是不是感覺很OK,沒有什么問題
優(yōu)化方案
推薦寫法如下:
SQL寫法:
Java寫法:
SQL不再使用count,而是改用LIMIT 1,讓數(shù)據(jù)庫(kù)查詢時(shí)遇到一條就返回,不要再繼續(xù)查找還有多少條了
業(yè)務(wù)代碼中直接判斷是否非空即可
總結(jié)
根據(jù)查詢條件查出來的條數(shù)越多,性能提升的越明顯,在某些情況下,還可以減少聯(lián)合索引的創(chuàng)建。
責(zé)任編輯人:CC
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
原文標(biāo)題:SQL判斷是否"存在",還在用 count 操作?很耗時(shí)的!
文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
相關(guān)推薦
Java注解可以說是我們編碼過程中最常用的。本篇文章將給大家介紹Java注解的概念、作用以及如何使用注解來提升代碼的可讀性和靈活性,并介紹如何通過注解來優(yōu)化我們的Java
發(fā)表于 09-30 11:39
?578次閱讀
1嵌入式SQL嵌入式SQL是指將SQL語(yǔ)言嵌入到程序設(shè)計(jì)語(yǔ)言中,被嵌入得程序設(shè)計(jì)語(yǔ)言如C、C++、java等稱為宿主語(yǔ)言預(yù)編譯:由數(shù)據(jù)庫(kù)管理系統(tǒng)得預(yù)處理程序隊(duì)源程序進(jìn)行掃描,識(shí)別出嵌入
發(fā)表于 11-09 06:24
JAVA版聊天軟件源代碼
一款用JAVA制作開發(fā)的小型聊天軟件,里面附有安裝程序和JAVA源代碼。.rar
發(fā)表于 03-11 14:21
?0次下載
網(wǎng)絡(luò)的廣泛應(yīng)用給社會(huì)帶來極大便捷,網(wǎng)絡(luò)安全特別是SQL 注入也成為了一個(gè)倍受關(guān)注的問題。與此同時(shí),Java Web 由于其平臺(tái)無關(guān)性、“一次編寫、隨處運(yùn)行”,使得越來越多的程序員加入到Java 當(dāng)中。本文在分析了
發(fā)表于 02-26 15:59
?12次下載
本文檔的主要內(nèi)容詳細(xì)介紹的是使用java語(yǔ)言導(dǎo)入SQL到MySql的源代碼免費(fèi)下載。
發(fā)表于 09-23 16:38
?3次下載
Java異常的習(xí)題和代碼分析
發(fā)表于 07-08 14:54
?5次下載
的count 目前多數(shù)人的寫法 多次REVIEW代碼時(shí),發(fā)現(xiàn)如現(xiàn)現(xiàn)象:業(yè)務(wù)代碼中,需要根據(jù)一個(gè)或多個(gè)條件,查詢是否存在記錄,不關(guān)心有多少條記錄。普遍的SQL及
發(fā)表于 07-26 10:57
?2020次閱讀
1嵌入式SQL嵌入式SQL是指將SQL語(yǔ)言嵌入到程序設(shè)計(jì)語(yǔ)言中,被嵌入得程序設(shè)計(jì)語(yǔ)言如C、C++、java等稱為宿主語(yǔ)言預(yù)編譯:由數(shù)據(jù)庫(kù)管理系統(tǒng)得預(yù)處理程序隊(duì)源程序進(jìn)行掃描,識(shí)別出嵌入
發(fā)表于 11-04 09:21
?17次下載
RushOrm 通過將 java 類映射到 SQL 表來取代對(duì) SQL 的需求。 為什么要編寫 RushOrm? 復(fù)雜的關(guān)系 - RushObjects 支持其他 RushObjects 的列表
發(fā)表于 04-13 09:59
?2次下載
這種寫法是比較丑陋的,為了避免上述丑陋的寫法,讓丑陋的設(shè)計(jì)變得優(yōu)雅。JAVA8提供了Optional類來優(yōu)化這種寫法,接下來的正文部分進(jìn)行詳細(xì)說明
發(fā)表于 04-24 15:18
?1040次閱讀
昨天在群里看到有小伙伴問,Java里如何解析SQL語(yǔ)句然后格式化SQL,是否有現(xiàn)成類庫(kù)可以使用?
發(fā)表于 04-10 11:59
?929次閱讀
基于JAVA+SQL電子通訊錄帶系統(tǒng)托盤(源代碼及配置文檔)
發(fā)表于 06-09 16:07
?0次下載
實(shí)現(xiàn)簡(jiǎn)單,SQL 也能走索引,而且只查詢一次數(shù)據(jù)庫(kù),感覺可行
只是:有點(diǎn)不好理解,因?yàn)槲覀兤綍r(shí)這么用的少,所以這種寫法看起來很陌生
另外,行行比較是 SQL 規(guī)范,不是某個(gè)關(guān)系型數(shù)據(jù)庫(kù)的規(guī)范,也就說關(guān)系型數(shù)據(jù)庫(kù)都應(yīng)該支持這種
發(fā)表于 07-17 09:51
?472次閱讀
Java項(xiàng)目防止SQL注入方式
這里總結(jié)4種:
PreparedStatement防止SQL注入
mybatis中#{}防止SQL注入
對(duì)請(qǐng)求參數(shù)的敏感詞匯進(jìn)行過濾
ngin
發(fā)表于 10-16 14:26
?532次閱讀
INSERT INTO是MySQL中常用的一種SQL語(yǔ)句,用于將數(shù)據(jù)插入到表中。此文將詳細(xì)介紹INSERT INTO語(yǔ)句的三種不同寫法及其用途,并提供代碼示例和相關(guān)解釋。 正文: 一、基本插入
發(fā)表于 11-21 14:18
?1.3w次閱讀
評(píng)論