SQL最佳化的方式

來源:互聯網
上載者:User

標籤:and   sel   使用   內容   union   交集   HERE   全表掃描   整數   

1.避免 欄位 值為null ,盡量賦予預設值, 整數: 0 , 小數:0 , 字元: ‘‘

null值 無法 加入索引, 查詢 null值時 無法 啟用索引, 全表掃描

(個別特殊 需求下, 表中仍需要 null值)

2.盡量避免使用 不等於 : != 或 <>

不等 條件 無法 利用索引 進行檢索 , 逐行掃表

(某些情境下, 不等條件 可能 無法避免)

3. 盡量避免使用 or 串連條件 , or 導致 掃描全表

替代方案 : union all


(1)union all : 將兩個查詢結果 聯合 成 一個 查詢結果集

查詢語句1

union all

查詢語句2 ;

注意: 兩個查詢語句 查詢的 欄位要一致

union all 只是 簡單機械地將 兩個結果集 合并成一個結果集 , 不會做去重

(2)union : 將兩個 查詢結果集 合并成 一個 查詢結果集, 並去重(!!!!!!!)


(3)intersect : 擷取 兩個查詢結果集的 交集 (union all 相當於並集)

查詢語句1

intersect

查詢語句2 ;

(4)minus(差集,減集)

查詢語句1

minus

查詢語句2 ;

第一個查詢結果集 減去 第二個查詢結果集

注意: 如果 第一個結果集 的內容 完全被 第二個結果集 包含, 則 差集結果 為 空

4. 慎用 in 和 not in , 會導致 全表掃描

如果 in中為連續數值, 可以用 between and 替代

5. 盡量在 where 子句中 少用 函數處理

6. 在業務 能夠 滿足的情況下, 少用 like 模糊尋找 (實際項目中 很難避免 )

7. where 子句中, 盡量 避免 對 欄位進行 算術運算 , 可以將欄位的算術運算 轉換為 條件值的運算 ,或直接 將運算結果寫入sql

8. 子查詢中, exists 效能高於 in

9. 索引 不要過多, 以免 增加 資料庫資料改變時, 頻發維護索引目錄 造成的 負擔

10. select 子句中 不要使用 "*" , 練習測試時可以用

SQL最佳化的方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.