sql 一个字段在另外一个表没出现_都9012年啦,不懂得这些SQL语句优化,你是要吃大亏的...
引言
數據庫的性能優化技術一直是個老生常談的問題,不管是MySQL、SQL Server還是Oracle。
對于我們IT開發人員和運維人員,掌握常用的SQL 優化語句是非常必要的,它可以使你的工作變得“事半功倍”,會為你帶來很多便利和節約很多時間。
接下來,我將帶領你們認識以下的常用優化語句。
1. SQL語句要一致,避免出現大小寫
如果讓你看上面兩條SQL語句,你是不是覺得它們是一樣的?
但是對于數據庫軟件在搜索時,可就不一樣了。他會認為是兩句SQL語句,因此要進行兩次解析,生成兩段執行代碼。
因此,我們程序員在開發時要注意保證相同的SQL語句在其他地方也有要完全一致,多個空格、逗號都不行。
2. 正確使用like模糊查詢,避免全表掃描
對于上面的模糊查詢,如like 后面的“%chicken%”,因為 chicken 前面存在了%,那么程序就得對整個表進行掃描,耗費時間,資源。所以,在非必要的情況下,請不要在關鍵字前面加 %。
3. where 語句中請不要出現對null的判斷,這樣會導致引擎放棄索引進而進行全表掃描,辦法是用0來替換null。
4. 限制性使用 count(*)
以上語句中,使用count(*),就會對全表進行查詢。多次一舉,還降低數據庫性能。
5. where 多條件查詢時,將數量少的放在前面
上圖中,第一條SQL語句 性別為1 的很多,先選擇出sex =1的,然后再對剩下的數據根據name 字段查詢,這樣的效率很低。
而第二條SQL 語句 先對那么字段進行篩選,剩下的數據就變得很少了,再根據sex=1,這樣效率很高,數據庫執行也很快。
6. 不要一味地追求 Select *
第一句SQL語句, select * 會增加數據查詢表的時間,因為它需要user 這個表中所有的數據都給你查詢出來,另外查詢出來的數據傳遞給你也是要耗費時間的。
而第二句SQL語句,則定位很精準。不必要把表中不需要的數據查詢出來,效率高,執行速度快。
7. 合理使用索引,不要出現以下操作
- 索引字段上面不要出現 where !=或者是 where >,< 等這樣的操作符;
- 索引字段上面不要出現類型轉換的問題,(比如字段要求的是BOOL類型,而你傳入的參數卻是String類型);
上述操作會導致索引失效,進而會使數據庫查詢變成了 全表查詢。
8. 對于SQL語句要學會拆分法
當一個SQL語句過于冗余、雜亂時,嵌套了多級查詢,其實這樣也會降低SQL的性能問題。對于此問題,應該懂得拆分SQL語句,用多個SQL語句完成那個復雜的嵌套的SQL語句,程序速度會變快。
9. 多使用 not exist 而非 not in
對于第二個SQL語句,使用了 not in 會對內外表都進行了全表查詢,沒有用到了索引; 而對于 not exist 利用到了索引,索引效率會高。
10、OR 不要想當然的就使用
對于上述兩條SQL語句,表明上看兩者的執行效率應該差不多。其實天壤之別,or執行的是全表查詢,而 union利用的是索引查詢,后者效率要高的多。
結論
從上述總結的SQL語句優化方法可以看得出來:
- 查詢的時候要盡量使用數據庫引擎索引;
- 還有就是寫的查詢語句條件盡量簡單明了,不要冗余復雜
- 理解各個關鍵詞的作用,并且不要使用錯誤的SQL語句,反而會是累贅。
總結
以上是生活随笔為你收集整理的sql 一个字段在另外一个表没出现_都9012年啦,不懂得这些SQL语句优化,你是要吃大亏的...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 额头黑怎么去除
- 下一篇: linux pxe安装mysql_搭建P