mysql避免全表掃描


  我們在寫數據庫查詢語句的時候,經常會忽略一些查詢性能問題,導致最后在查詢數據的情況下非常耗時,影響項目質量。

  數據庫的設計是一門藝術,需要遵循一定的規范。

  對數據量很大的表一定要建立合適的索引,無論是單個索引還是復合索引,要根據查詢的業務邏輯去建立,同時也記住,單個表的索引數量不得超過5個,不然會很導致影響寫入的性能。

  建立了合適的索引折后,我們要會正確的運用,這是關鍵,盡量避免全表掃描搜索這樣的情況,不然索引就是雞肋了。

  1查詢條件中帶有 “where 字段 is null” 會導致全表掃描,不會使用字段索引

  2、不等於操作符(!=或者<>)會限制索引,引起全表掃描,即使比較的字段上有索引

  3、對於like ‘%...%’(全模糊)這樣的條件,是無法使用索引的,但是變成like ‘…%’,是會使用索引的

  4、復合索引的使用一定要根據建立的順序去設置條件,復合索引的結構與電話簿類似,人名由姓和名構成,電話簿首先按姓氏對進行排序,然后按名字對有相同姓氏的人進行排序。如果您知道姓,電話簿將非常有用;如果您知道姓和名,電話簿則更為有用,但如果您只知道名不姓,電話簿將沒有用處

  5、盡量避免在where子句中對字段進行函數操作,這將導致引擎放棄使用索引而進行全表掃描


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM