日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

在使用MyBatis中SQL語句優(yōu)化總結(jié)

華為開發(fā)者社區(qū) ? 來源:華為云社區(qū) ? 作者:搬搬磚打打游戲 ? 2021-02-04 15:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

MyBatis 作為一款優(yōu)秀的持久層框架,它支持自定義SQL、存儲過程以及高級映射。它免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。還可以通過簡單的 XML 或注解來配置和映射原始類型、接口Java POJO(Plain Old Java Objects,普通老式 Java 對象)為數(shù)據(jù)庫中的記錄。接下來為大家?guī)碓谌粘?yīng)用的過程中的一些小技巧。

1

MyBatis總結(jié)

1.MyBatis查詢/更新語句,沒有找到符合條件的記錄,會返回什么?返回類型為String的:實(shí)際返回null; 返回類型為對象的:實(shí)際返回null; 返回類型為列表等集合: 實(shí)際返回空集合[]; 返回類型為Boolean:實(shí)際返回false當(dāng)數(shù)據(jù)庫語句插入條件不滿足,會返回false;比如使用dual的SQL語句;

2.mybatis會拋出哪些常見異常?不是所有的異常,都認(rèn)為程序出異常要報(bào)錯; 比如用戶重復(fù)收藏商品,可以直接返回成功,這時候?qū)Α斑`反唯一鍵”異常要特殊處理。

(1) 插入語句DataIntegrityViolationException:違反非空約束、數(shù)據(jù)大小超過約束 DuplicateKeyException:違反唯一鍵約束 CannotAcquireLockException: for update nowait 超時

(2)更新語句條件不滿足時,會返回false 數(shù)據(jù)庫操作應(yīng)該判斷返回值,比如下面BUG: (3) bug類,表字段找不到等場景MyBatisSystemException BadSqlGrammarException

3.事務(wù)里面套用for update,看上去繞過了事務(wù)等for update獲取鎖后,select出來的是最新的數(shù)據(jù) 4.for update是一種行級鎖,又叫排它鎖一旦用戶對某個行施加了行級加鎖,則該用戶可以查詢也可以更新被加鎖的數(shù)據(jù)行,其它用戶只能查詢但不能更新被加鎖的數(shù)據(jù)行;如果查詢條件帶有主鍵,會鎖行數(shù)據(jù),如果沒有,會鎖表。如果一定要用FOR UPDATE,建議加上NOWAIT 或 for update wait 3

2

SQL優(yōu)化

約束條件:

數(shù)據(jù)表增加表的約束條件,防止臟數(shù)據(jù)。

limit1:

如果我們知道返回結(jié)果只有 1 條,就可以使用LIMIT 1,告訴 SELECT 語句只需要返回一條記錄即可。這樣的好處就是 SELECT 不需要掃描完整的表,只需要檢索到一條符合條件的記錄即可返回。

拼寫風(fēng)格:

SQL保留字使用英文大寫,其他使用英文小寫;提高可讀性。

Like:

使用like加通配符,可能使得索引失效,會觸發(fā)全表掃描。如果要讓索引生效,那么 LIKE 后面就不能以(%)開頭,比如使用LIKE ‘%太%’或LIKE ‘%太’的時候就會對全表進(jìn)行掃描。如果使用LIKE ‘太%’,同時檢索的字段進(jìn)行了索引的時候,則不會進(jìn)行全表掃描。

對常用于搜索的字段添加索引,能極大增加查詢效率

使用“自連接”優(yōu)于子查詢。

使用視圖:

視圖可以理解成給一個查詢SQL起個別名。 只不過提前經(jīng)過編譯,視圖不能傳入變量,不保存數(shù)據(jù) 視圖的優(yōu)點(diǎn)是:隔絕數(shù)據(jù)表操作

使用臨時表:

http://9.IN/EXIST 使用類似兩層for循環(huán),遵循小表驅(qū)動大表原則。 如果兩個表中一個較小,一個是大表,則子查詢表大的用exists,子查詢表小的用in:

例如:表A(小表),表B(大表)

select * from A where cc in (select cc from B) ;// 效率低,用到了A表上cc列的索引;select * from A where exists(select cc from B where cc=A.cc) ;// 效率高,用到了B表上cc列的索引。

不建議使用索引的情況:

(1)總數(shù)據(jù)量很少。 (2)數(shù)據(jù)重復(fù)度大,且不同取值分布均勻,比如性別男女比例各接近50%。

唯一索引/唯一鍵有3個字段時,按其中1個字段查詢,是否比沒有索引效率高?

---- 沒有,這種情況創(chuàng)建唯一鍵,更多的是為了保證數(shù)據(jù)正確性。 (1)唯一索引和唯一鍵的區(qū)別? (2)創(chuàng)建聯(lián)合索引時,我們需要注意創(chuàng)建時的順序問題 因?yàn)槁?lián)合索引 (x, y, z) 和 (z, y, x) 在使用的時候效率可能會存在差別。比如剛才舉例的 (x, y, z),如果查詢條件是 WHERE x=1 AND y=2 AND z=3,就可以匹配上聯(lián)合索引;如果查詢條件是 WHERE y=2,就無法匹配上聯(lián)合索引。

連接表:

(1)連接表的數(shù)量盡量不要超過 3 張,因?yàn)槊吭黾右粡埍砭拖喈?dāng)于增加了一次嵌套的循環(huán),數(shù)量級增長會非???,嚴(yán)重影響查詢的效率。 (2)對用于連接的字段創(chuàng)建索引,并且該字段在多張表中的類型必須一致。比如 user_id 在 product_comment 表和 user 表中都為 int(11) 類型,而不能一個為 int 另一個為 varchar 類型。

索引失效情況

(1)在 WHERE 子句中,如果在 OR 前的條件列進(jìn)行了索引,而在 OR 后的條件列沒有進(jìn)行索引,那么索引會失效。 (2)索引列盡量設(shè)置為 NOT NULL 約束。

數(shù)據(jù)表字段,不要用bool類型,用int2 代替 bool類型,增加擴(kuò)展能力

原文標(biāo)題:學(xué)起來!MyBatis中SQL語句優(yōu)化小結(jié)

文章出處:【微信公眾號:華為開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

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

    關(guān)注

    1

    文章

    807

    瀏覽量

    46962
  • mybatis
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    7183

原文標(biāo)題:學(xué)起來!MyBatis中SQL語句優(yōu)化小結(jié)

文章出處:【微信號:Huawei_Developer,微信公眾號:華為開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    NineData SQL AI 智能補(bǔ)全上線:寫 SQL,不必每次都從頭敲

    。用戶只需SQL窗口輸入時按Tab鍵即可快速補(bǔ)全灰色提示內(nèi)容,無需改變原有操作習(xí)慣。這項(xiàng)集成NineDataSQL窗口的輕量化功能,有效減少了編寫過程的思路切換和結(jié)構(gòu)確認(rèn)時間,讓
    的頭像 發(fā)表于 04-01 20:19 ?330次閱讀
    NineData <b class='flag-5'>SQL</b> AI 智能補(bǔ)全上線:寫 <b class='flag-5'>SQL</b>,不必每次都從頭敲

    NineData 社區(qū)版的慢SQL分析,比查看日志+看EXPLAIN適合中小團(tuán)隊(duì)

    本文探討 NineData 社區(qū)版 MySQL 慢 SQL 場景對中小團(tuán)隊(duì)的適用性。與 “查看日志 + 看 EXPLAIN” 傳統(tǒng)方式不同,它將慢 SQL 按模板聚合,能從大盤、模板、診斷等多維
    的頭像 發(fā)表于 03-17 14:07 ?136次閱讀
    NineData 社區(qū)版的慢<b class='flag-5'>SQL</b>分析,比查看日志+看EXPLAIN適合中小團(tuán)隊(duì)

    MySQL 慢 SQL 排查這件事,NineData 社區(qū)VS DBeaver/ Navicat 技術(shù)分析

    社區(qū)版的定位不同,它是免費(fèi)、本地化部署的數(shù)據(jù)管理平臺,將數(shù)據(jù)庫 DevOps、數(shù)據(jù)復(fù)制、數(shù)據(jù)庫對比三大能力整合于一體。 MySQL 慢 SQL 這條鏈路里,它用到的是 DevOps 的慢查詢分析
    的頭像 發(fā)表于 03-17 11:53 ?146次閱讀
    MySQL 慢 <b class='flag-5'>SQL</b> 排查這件事,NineData 社區(qū)VS DBeaver/ Navicat 技術(shù)分析

    PKHV3020高壓衰減棒不同頻率脈沖信號測量的示波器設(shè)置優(yōu)化指南

    本文總結(jié)PKHV3020高壓衰減棒不同頻率脈沖信號測量,提出優(yōu)化示波器參數(shù)設(shè)置的方法,以確保準(zhǔn)確還原脈沖波形,提升測量性能。
    的頭像 發(fā)表于 12-09 09:49 ?667次閱讀

    使用NVIDIA Nemotron RAG和Microsoft SQL Server 2025構(gòu)建高性能AI應(yīng)用

    搜索和調(diào)用外部 AI 模型的 SQL 原生 API。NVIDIA 與微軟共同將 SQL Server 2025 與 NVIDIA Nemotron RAG 開放模型集合無縫連接,這使您能夠云端或本地環(huán)境
    的頭像 發(fā)表于 12-01 09:31 ?1082次閱讀
    使用NVIDIA Nemotron RAG和Microsoft <b class='flag-5'>SQL</b> Server 2025構(gòu)建高性能AI應(yīng)用

    實(shí)際網(wǎng)關(guān)設(shè)計(jì),如何利用電容的高紋波電流能力進(jìn)行熱管理優(yōu)化?

    實(shí)際網(wǎng)關(guān)設(shè)計(jì),如何利用電容的高紋波電流能力進(jìn)行熱管理優(yōu)化?
    發(fā)表于 11-26 07:59

    不用編程不用聯(lián)網(wǎng),實(shí)現(xiàn)倍福(BECKHOFF)PLC對接SQL數(shù)據(jù)庫,上報(bào)和查詢數(shù)據(jù)的案例

    各種配置與SQL語句命令,可查閱這篇文章。數(shù)據(jù)多的話可以導(dǎo)出CSV文件EXCEL編輯后再導(dǎo)入,文件菜單有相關(guān)功能按鈕。 查看數(shù)據(jù)的當(dāng)前值:鼠標(biāo)雙擊數(shù)據(jù)配置表對應(yīng)的\'序號\',消息欄會顯示序號對應(yīng)
    發(fā)表于 10-10 11:14

    數(shù)據(jù)庫慢查詢分析與SQL優(yōu)化實(shí)戰(zhàn)技巧

    今天,我將分享我處理數(shù)千次數(shù)據(jù)庫性能問題中積累的實(shí)戰(zhàn)經(jīng)驗(yàn),幫助你系統(tǒng)掌握慢查詢分析與SQL優(yōu)化的核心技巧。無論你是剛?cè)腴T的運(yùn)維新手,還是有一定經(jīng)驗(yàn)的工程師,這篇文章都將為你提供實(shí)用的解決方案。
    的頭像 發(fā)表于 09-08 09:34 ?1266次閱讀

    SQL 通用數(shù)據(jù)類型

    SQL 通用數(shù)據(jù)類型 數(shù)據(jù)庫表的每個列都要求有名稱和數(shù)據(jù)類型。Each column in a database table is required to have a name and a
    的頭像 發(fā)表于 08-18 09:46 ?885次閱讀

    Text2SQL準(zhǔn)確率暴漲22.6%!3大維度全拆

    摘要 技術(shù)背景:Text2SQL 是將自然語言查詢轉(zhuǎn)為 SQL 的任務(wù),經(jīng)歷了基于規(guī)則、神經(jīng)網(wǎng)絡(luò)、預(yù)訓(xùn)練語言模型、大語言模型四個階段。當(dāng)前面臨提示優(yōu)化、模型訓(xùn)練、推理時增強(qiáng)三大難題,研究
    的頭像 發(fā)表于 08-14 11:17 ?841次閱讀
    Text2<b class='flag-5'>SQL</b>準(zhǔn)確率暴漲22.6%!3大維度全拆

    Unicore標(biāo)準(zhǔn)NEMA語句GSA及說明

    本文介紹和芯星通的NEMA語句說明。
    的頭像 發(fā)表于 07-16 11:39 ?854次閱讀
    Unicore標(biāo)準(zhǔn)NEMA<b class='flag-5'>語句</b>GSA及說明

    基礎(chǔ)篇3:掌握Python的條件語句與循環(huán)

    Python編程語言中,條件語句和循環(huán)是構(gòu)成復(fù)雜邏輯和數(shù)據(jù)處理的基石。本篇基礎(chǔ)教程將幫助您深入了解Python的條件語句和循環(huán)結(jié)構(gòu),讓您能夠更好地控制程序流程。 條件
    發(fā)表于 07-03 16:13

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

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

    大促數(shù)據(jù)庫壓力激增,如何一眼定位 SQL 執(zhí)行來源?

    你是否曾經(jīng)遇到過這樣的情況:大促活動期間,用戶訪問量驟增,數(shù)據(jù)庫的壓力陡然加大,導(dǎo)致響應(yīng)變慢甚至服務(wù)中斷?更讓人頭疼的是,當(dāng)你試圖快速定位問題所在時,卻發(fā)現(xiàn)難以確定究竟是哪個業(yè)務(wù)邏輯SQL
    的頭像 發(fā)表于 06-10 11:32 ?676次閱讀
    大促數(shù)據(jù)庫壓力激增,如何一眼定位 <b class='flag-5'>SQL</b> 執(zhí)行來源?

    詳解TIA Portal SCL編程語言中的IF語句

    IF 語句是編程中最基本和最重要的控制結(jié)構(gòu)之一,它的主要作用是根據(jù)條件決定程序的執(zhí)行路徑,IF 語句是編程實(shí)現(xiàn)邏輯判斷和決策的基礎(chǔ)。
    的頭像 發(fā)表于 05-24 15:01 ?2192次閱讀
    詳解TIA Portal SCL編程語言中的IF<b class='flag-5'>語句</b>
    甘洛县| 乌拉特中旗| 峨边| 九寨沟县| 黎城县| 宁海县| 定兴县| 大田县| 来凤县| 洪洞县| 高雄市| 府谷县| 湾仔区| 固始县| 澄城县| 无棣县| 咸阳市| 德化县| 蓬溪县| 新民市| 清新县| 中卫市| 安达市| 宁陵县| 纳雍县| 天峻县| 收藏| 红桥区| 株洲市| 珠海市| 黔东| 阜阳市| 双城市| 百色市| 项城市| 新巴尔虎右旗| 安康市| 建德市| 平果县| 新和县| 衡水市|