一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SQL告別count改用LIMIT 1

數(shù)據(jù)分析與開發(fā) ? 來源:今日頭條 ? 作者:程序猿囧途 ? 2021-07-26 10:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

根據(jù)某一條件從數(shù)據(jù)庫表中查詢 『有』與『沒有』,只有兩種狀態(tài),那為什么在寫SQL的時候,還要SELECT count(*) 呢?無論是剛?cè)氲赖?a href="http://www.www27dydycom.cn/v/tag/1730/" target="_blank">程序員新星,還是精湛沙場多年的程序員老白,都是一如既往的count

目前多數(shù)人的寫法

多次REVIEW代碼時,發(fā)現(xiàn)如現(xiàn)現(xiàn)象:業(yè)務(wù)代碼中,需要根據(jù)一個或多個條件,查詢是否存在記錄,不關(guān)心有多少條記錄。普遍的SQL及代碼寫法如下

##### SQL寫法:

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

##### Java寫法:

int nums = xxDao.countXxxxByXxx(params);

if ( nums 》 0 ) {

//當(dāng)存在時,執(zhí)行這里的代碼

} else {

//當(dāng)不存在時,執(zhí)行這里的代碼

}

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

優(yōu)化方案

推薦寫法如下:

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

##### Java寫法:

Integer exist = xxDao.existXxxxByXxx(params);

if ( exist != NULL ) {

//當(dāng)存在時,執(zhí)行這里的代碼

} else {

//當(dāng)不存在時,執(zhí)行這里的代碼

}

SQL不再使用count,而是改用LIMIT 1,讓數(shù)據(jù)庫查詢時遇到一條就返回,不要再繼續(xù)查找還有多少條了業(yè)務(wù)代碼中直接判斷是否非空即可

總結(jié)

根據(jù)查詢條件查出來的條數(shù)越多,性能提升的越明顯,在某些情況下,還可以減少聯(lián)合索引的創(chuàng)建。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    783

    瀏覽量

    45173

原文標(biāo)題:SQL 查找是否"存在",別再 count 了!

文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    達(dá)夢數(shù)據(jù)庫常用管理SQL命令詳解

    達(dá)夢數(shù)據(jù)庫常用管理SQL命令詳解
    的頭像 發(fā)表于 06-17 15:12 ?597次閱讀
    達(dá)夢數(shù)據(jù)庫常用管理<b class='flag-5'>SQL</b>命令詳解

    如何一眼定位SQL的代碼來源:一款SQL染色標(biāo)記的簡易MyBatis插件

    作者:京東物流 郭忠強(qiáng) 導(dǎo)語 本文分析了后端研發(fā)和運(yùn)維在日常工作中所面臨的線上SQL定位排查痛點(diǎn),基于姓名貼的靈感,設(shè)計和開發(fā)了一款SQL染色標(biāo)記的MyBatis插件。該插件輕量高效,對業(yè)務(wù)代碼無
    的頭像 發(fā)表于 03-05 11:36 ?420次閱讀
    如何一眼定位<b class='flag-5'>SQL</b>的代碼來源:一款<b class='flag-5'>SQL</b>染色標(biāo)記的簡易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
    發(fā)表于 02-01 11:51

    Devart: dbForge Compare Bundle for SQL Server—比較SQL數(shù)據(jù)庫最簡單、最準(zhǔn)確的方法

    ? dbForge Compare Bundle For SQL Server:包含兩個工具,可幫助您節(jié)省用于手動數(shù)據(jù)庫比較的 70% 的時間 dbForge數(shù)據(jù)比較 幫助檢測和分析實(shí)時SQL數(shù)據(jù)庫
    的頭像 發(fā)表于 01-17 11:35 ?567次閱讀

    dbForge Studio For SQL Server:用于有效開發(fā)的最佳SQL Server集成開發(fā)環(huán)境

    dbForge Studio For SQL Server:用于有效開發(fā)的最佳SQL Server集成開發(fā)環(huán)境 SQL編碼助手 SQL代碼分析 查詢分析器 可視化查詢生成器 數(shù)據(jù)和模式
    的頭像 發(fā)表于 01-16 10:36 ?746次閱讀

    Devart::dbForge SQL Complete讓生產(chǎn)力上一個臺階

    SQL編碼助手,適用于SSMS 和VS 該工具提供上下文感知的代碼補(bǔ)全,使SQL開發(fā)人員和數(shù)據(jù)庫管理員能夠更快地編寫代碼。 SQL Complet包含許多實(shí)用的功能,這些功能是專門為提高開發(fā)團(tuán)隊(duì)
    的頭像 發(fā)表于 01-14 11:09 ?626次閱讀
    Devart::dbForge <b class='flag-5'>SQL</b> Complete讓生產(chǎn)力上一個臺階

    通過Skyvia Connect SQL終端節(jié)點(diǎn)訪問任何數(shù)據(jù)

    通過 Skyvia Connect SQL 終端節(jié)點(diǎn)訪問任何數(shù)據(jù) ? 通過 Skyvia Connect SQL 終端節(jié)點(diǎn)訪問任何數(shù)據(jù)ADO.NET 數(shù)據(jù)網(wǎng)關(guān) 使用 Skyvia Connect
    的頭像 發(fā)表于 01-02 09:31 ?371次閱讀
    通過Skyvia Connect <b class='flag-5'>SQL</b>終端節(jié)點(diǎn)訪問任何數(shù)據(jù)

    淺談SQL優(yōu)化小技巧

    作者:京東零售 王軍 回顧:MySQL的執(zhí)行過程回顧 MySQL的執(zhí)行過程,幫助 介紹 如何進(jìn)行sql優(yōu)化。 (1)客戶端發(fā)送一條查詢語句到服務(wù)器; (2)服務(wù)器先查詢緩存,如果命中緩存,則立即返回
    的頭像 發(fā)表于 12-25 09:59 ?871次閱讀

    verilog計數(shù)器代碼為什么要使用這句話if (count===8\'bxxxxxxxx)count=8\'b0000_0000;

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

    固定電話改用光纖可以嗎

    固定電話可以改用光纖。這種升級通常是由電信服務(wù)提供商進(jìn)行的,以適應(yīng)技術(shù)發(fā)展和市場需求。光纖作為一種更先進(jìn)的通信技術(shù),其推廣和應(yīng)用是電信行業(yè)技術(shù)升級的必然趨勢。以下是關(guān)于固定電話改用光纖的詳細(xì)解答
    的頭像 發(fā)表于 12-01 22:59 ?1533次閱讀

    SQL錯誤代碼及解決方案

    SQL數(shù)據(jù)庫開發(fā)和管理中,常見的錯誤代碼及其解決方案可以歸納如下: 一、語法錯誤(Syntax Errors) 錯誤代碼 :無特定代碼,但通常會在錯誤消息中明確指出是語法錯誤。 原因 :SQL語句
    的頭像 發(fā)表于 11-19 10:21 ?6549次閱讀

    常用SQL函數(shù)及其用法

    SQL 函數(shù)及其用法: 一、聚合函數(shù)(Aggregate Functions) 聚合函數(shù)對一組值執(zhí)行計算,并返回單個值。 COUNT() 用途 :返回匹配指定條件的行數(shù)。 示例 : SELECT
    的頭像 發(fā)表于 11-19 10:18 ?1455次閱讀

    SQL與NoSQL的區(qū)別

    在信息技術(shù)領(lǐng)域,數(shù)據(jù)庫是存儲和管理數(shù)據(jù)的核心組件。隨著互聯(lián)網(wǎng)的發(fā)展和大數(shù)據(jù)時代的到來,對數(shù)據(jù)庫的需求也在不斷變化。SQL和NoSQL作為兩種主流的數(shù)據(jù)庫管理系統(tǒng),各自有著獨(dú)特的優(yōu)勢和應(yīng)用場
    的頭像 發(fā)表于 11-19 10:15 ?612次閱讀

    大數(shù)據(jù)從業(yè)者必知必會的Hive SQL調(diào)優(yōu)技巧

    不盡人意。本文針對Hive SQL的性能優(yōu)化進(jìn)行深入研究,提出了一系列可行的調(diào)優(yōu)方案,并給出了相應(yīng)的優(yōu)化案例和優(yōu)化前后的SQL代碼。通過合理的優(yōu)化策略和技巧,能夠顯著提升Hive SQL的執(zhí)行效率和響應(yīng)速度。 關(guān)鍵詞: Hive
    的頭像 發(fā)表于 09-24 13:30 ?701次閱讀

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

    數(shù)據(jù)庫在各個領(lǐng)域的逐步應(yīng)用,其安全性也備受關(guān)注。SQL 注入攻擊作為一種常見的數(shù)據(jù)庫攻擊手段,給網(wǎng)絡(luò)安全帶來了巨大威脅。今天我們來聊一聊SQL 注入攻擊的基本知識。 SQL 注入攻擊的基本原理
    的頭像 發(fā)表于 08-05 17:36 ?644次閱讀