共計 1517 個字符,預計需要花費 4 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
丸趣 TV 小編給大家分享一下 sql 優化的方法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
sql 優化的方法:1、盡量避免使用【select *】,無用的字段會降低查詢效率;2、避免使用 in 和 not in,可以選擇 between 和 exists 代替;3、避免使用 or,可以選擇 union 代替。
sql 優化的方法:
1、在表中建立索引,優先考慮 where、group by 使用到的字段。
2、盡量避免使用 select *,返回無用的字段會降低查詢效率。如下:
SELECT * FROM t
優化方式:使用具體的字段代替 *,只返回使用到的字段。
3、盡量避免使用 in 和 not in,會導致數據庫引擎放棄索引進行全表掃描。如下:
SELECT * FROM t
WHERE id IN (2,3)SELECT * FROM t
1 WHERE username IN (SELECT username FROM t2)
優化方式:如果是連續數值,可以用 between 代替。如下:
SELECT * FROM t
WHERE id BETWEEN 2 AND 3
如果是子查詢,可以用 exists 代替。如下:
SELECT * FROM t
1 WHERE EXISTS (SELECT * FROM t
2 WHERE t1.username = t2.username)
4、盡量避免使用 or,會導致數據庫引擎放棄索引進行全表掃描。如下:
SELECT * FROM t
WHERE id = 1 OR id = 3
優化方式:可以用 union 代替 or。如下:
SELECT * FROM t
WHERE id = 1 UNIONSELECT * FROM t
WHERE id = 3
(PS:如果 or 兩邊的字段是同一個,如例子中這樣。貌似兩種方式效率差不多,即使 union 掃描的是索引,or 掃描的是全表)
5、盡量避免在字段開頭模糊查詢,會導致數據庫引擎放棄索引進行全表掃描。如下:
SELECT * FROM t
WHERE username LIKE %li%
優化方式:盡量在字段后面使用模糊查詢。如下:
SELECT * FROM t
WHERE username LIKE li%
6、盡量避免進行 null 值的判斷,會導致數據庫引擎放棄索引進行全表掃描。如下:
SELECT * FROM t
WHERE score IS NULL
優化方式:可以給字段添加默認值 0,對 0 值進行判斷。如下:
SELECT * FROM t
WHERE score = 0
7、盡量避免在 where 條件中等號的左側進行表達式、函數操作,會導致數據庫引擎放棄索引進行全表掃描。如下:
SELECT * FROM t
2 WHERE score/10 = 9SELECT * FROM t
2 WHERE SUBSTR(username,1,2) = li
優化方式:可以將表達式、函數操作移動到等號右側。如下:
SELECT * FROM t
2 WHERE score = 10*9SELECT * FROM t
2 WHERE username LIKE li%
8、當數據量大時,避免使用 where 1= 1 的條件。通常為了方便拼裝查詢條件,我們會默認使用該條件,數據庫引擎會放棄索引進行全表掃描。如下:
SELECT * FROM t
WHERE 1=1
優化方式:用代碼拼裝 sql 時進行判斷,沒 where 加 where,有 where 加 and。
看完了這篇文章,相信你對“sql 優化的方法”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!
向 AI 問一下細節