5段SQL可以測試出你對SQL性能優化知識瞭解多少

5段SQL可以測試出你對SQL性能優化知識瞭解多少

 

數據庫是很強大的,它可以實現超預期的執行性能。但是很多人很容易寫出不能發揮最高效算法的SQL查詢語句,因而也容易產生無法預期的性能結果。

下面UncleToo爲大家整理出5段SQL,都是大家平時經常寫的SQL,但是稍微經過一些優化,或者換種寫法,也許他的執行效率就會高出好幾倍,大家也可以對照自己平時的寫法,看看自己是否還有繼續學習的空間。

本文介紹的SQL是基於ORACLE數據庫的。

1、查詢2014年所有的行


有過SQL優化經驗的人也許會問,這樣寫沒問題啊,將出現在條件中的字段加索引,可以起到優化SQL的作用,怎麼會有問題呢?有這樣疑問的朋友對數據庫優化還是有所瞭解的,但是你忽略了一點:不管是ORACLE還是其他數據庫,一旦將字段放在函數裏執行,該字段的索引將不起作用。那麼正確的寫法如下:



2、查詢出最近日期的一行數據


這段SQL很經典,開發中很多地方都可能會用到類似這樣的查詢。沒錯,這段SQL是不需要優化的,它可以按照經過索引的 Top-N 查詢方式執行,它的效率跟 INDEX UNIQUE SCAN(唯一索引掃描) 是等效的,所以會非常快。

3、兩個查詢語句,通過一個普通列查詢:




這個很簡單,只有第一個SQL用到了索引,而第二個卻無法使用索引。其實這就是單索引與組合索引在使用上的區別。

4、字符串模糊查詢


在前面的文章中,我們曾經說過 like 語句如何使用通配符才能提高效率(8個SQL語句常用優化技巧)。當條件中遇到 like 語句,那麼無論該字段是否設置索引效果都一樣,因爲索引遇到 like 就會無法發揮其效能,而且也沒有更好的解決辦法,因此建議大家除非萬不得已,否則不要輕易使用 like 語句。

5、查詢某條件下的記錄數


上面兩條查詢語句,第一條可能會查出幾千或者幾萬條記錄,而第二條語句因爲多了一個條件可能只查出幾條或幾十條記錄,也許大家會認爲第二條語句的效率更快。其實剛好相反,第一條語句的執行效率更快。因爲第一條語句中,索引覆蓋了所有查詢字段,而第二個SQL中的b條件沒有索引。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章