日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

sql 一个字段在另外一个表没出现_都9012年啦,不懂得这些SQL语句优化,你是要吃大亏的...

發(fā)布時(shí)間:2024/9/19 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql 一个字段在另外一个表没出现_都9012年啦,不懂得这些SQL语句优化,你是要吃大亏的... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

引言

數(shù)據(jù)庫的性能優(yōu)化技術(shù)一直是個(gè)老生常談的問題,不管是MySQL、SQL Server還是Oracle。

對(duì)于我們IT開發(fā)人員和運(yùn)維人員,掌握常用的SQL 優(yōu)化語句是非常必要的,它可以使你的工作變得“事半功倍”,會(huì)為你帶來很多便利和節(jié)約很多時(shí)間。

接下來,我將帶領(lǐng)你們認(rèn)識(shí)以下的常用優(yōu)化語句。

1. SQL語句要一致,避免出現(xiàn)大小寫

如果讓你看上面兩條SQL語句,你是不是覺得它們是一樣的?

但是對(duì)于數(shù)據(jù)庫軟件在搜索時(shí),可就不一樣了。他會(huì)認(rèn)為是兩句SQL語句,因此要進(jìn)行兩次解析,生成兩段執(zhí)行代碼。

因此,我們程序員在開發(fā)時(shí)要注意保證相同的SQL語句在其他地方也有要完全一致,多個(gè)空格、逗號(hào)都不行。

2. 正確使用like模糊查詢,避免全表掃描

對(duì)于上面的模糊查詢,如like 后面的“%chicken%”,因?yàn)?chicken 前面存在了%,那么程序就得對(duì)整個(gè)表進(jìn)行掃描,耗費(fèi)時(shí)間,資源。所以,在非必要的情況下,請(qǐng)不要在關(guān)鍵字前面加 %。

3. where 語句中請(qǐng)不要出現(xiàn)對(duì)null的判斷,這樣會(huì)導(dǎo)致引擎放棄索引進(jìn)而進(jìn)行全表掃描,辦法是用0來替換null。

4. 限制性使用 count(*)

以上語句中,使用count(*),就會(huì)對(duì)全表進(jìn)行查詢。多次一舉,還降低數(shù)據(jù)庫性能。

5. where 多條件查詢時(shí),將數(shù)量少的放在前面

上圖中,第一條SQL語句 性別為1 的很多,先選擇出sex =1的,然后再對(duì)剩下的數(shù)據(jù)根據(jù)name 字段查詢,這樣的效率很低。

而第二條SQL 語句 先對(duì)那么字段進(jìn)行篩選,剩下的數(shù)據(jù)就變得很少了,再根據(jù)sex=1,這樣效率很高,數(shù)據(jù)庫執(zhí)行也很快。

6. 不要一味地追求 Select *

第一句SQL語句, select * 會(huì)增加數(shù)據(jù)查詢表的時(shí)間,因?yàn)樗枰猽ser 這個(gè)表中所有的數(shù)據(jù)都給你查詢出來,另外查詢出來的數(shù)據(jù)傳遞給你也是要耗費(fèi)時(shí)間的。

而第二句SQL語句,則定位很精準(zhǔn)。不必要把表中不需要的數(shù)據(jù)查詢出來,效率高,執(zhí)行速度快。

7. 合理使用索引,不要出現(xiàn)以下操作

  • 索引字段上面不要出現(xiàn) where !=或者是 where >,< 等這樣的操作符;
  • 索引字段上面不要出現(xiàn)類型轉(zhuǎn)換的問題,(比如字段要求的是BOOL類型,而你傳入的參數(shù)卻是String類型);

上述操作會(huì)導(dǎo)致索引失效,進(jìn)而會(huì)使數(shù)據(jù)庫查詢變成了 全表查詢。

8. 對(duì)于SQL語句要學(xué)會(huì)拆分法

當(dāng)一個(gè)SQL語句過于冗余、雜亂時(shí),嵌套了多級(jí)查詢,其實(shí)這樣也會(huì)降低SQL的性能問題。對(duì)于此問題,應(yīng)該懂得拆分SQL語句,用多個(gè)SQL語句完成那個(gè)復(fù)雜的嵌套的SQL語句,程序速度會(huì)變快。

9. 多使用 not exist 而非 not in

對(duì)于第二個(gè)SQL語句,使用了 not in 會(huì)對(duì)內(nèi)外表都進(jìn)行了全表查詢,沒有用到了索引; 而對(duì)于 not exist 利用到了索引,索引效率會(huì)高。

10、OR 不要想當(dāng)然的就使用

對(duì)于上述兩條SQL語句,表明上看兩者的執(zhí)行效率應(yīng)該差不多。其實(shí)天壤之別,or執(zhí)行的是全表查詢,而 union利用的是索引查詢,后者效率要高的多。

結(jié)論

從上述總結(jié)的SQL語句優(yōu)化方法可以看得出來:

  • 查詢的時(shí)候要盡量使用數(shù)據(jù)庫引擎索引;
  • 還有就是寫的查詢語句條件盡量簡單明了,不要冗余復(fù)雜
  • 理解各個(gè)關(guān)鍵詞的作用,并且不要使用錯(cuò)誤的SQL語句,反而會(huì)是累贅。

總結(jié)

以上是生活随笔為你收集整理的sql 一个字段在另外一个表没出现_都9012年啦,不懂得这些SQL语句优化,你是要吃大亏的...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。