SQL優化的一些方法

SQL優化的一些方法

1.在查詢過程中,盡量避免全表掃描,考慮在whereorder by涉及的列上建立索引。
2.盡量避免在where子句中對字段進行NULL的判斷,建議不使用NULL,因為在查詢的時候NULL是不會通過索引來檢索的,他會放棄使用索引而進行全表掃描。
3.盡量避免查詢條件中使用like關鍵字,像%…%%...這樣的條件是沒有辦法使用索引的。使用的是全表掃描,還有就是由于匹配算法的關系,like的字段長度越大,模糊查詢的效率越低。并且優化空間很小。
4.不要在where子句中使用!=<>操作符。原因同上,放棄索引,使用全表掃描。可以使用or來修改。
?6.or有時候也會導致全表掃描,一個字段有索引,一個字段上沒有索引,在使用or的查詢的時候也會導致全表掃描。
7.避免對字段進行表達式操作或者函數操作。
8.update操作,如果只更改1、2個字段的話,不要修改所有字段。否則頻繁調用會引起明顯的性能消耗,同時帶來大量日志。
9.連接的使用,在使用表join的時候,如果有分頁的話,先分頁在join。否者邏輯上的讀寫會很高,性能很差。當然要考慮分頁前后的消息展示是否會因為join進行缺失。可能會導致兩個操作方式顯示的結果不一致。很有可能不一致。
10.不帶任何條件的count函數,會引起全表掃描?也就是說count(*)count(id)是有區別的么?不同MySQL的版本這個函數的性能不一樣。
11.?索引的類型(BTREE,RTREE,HASH,FULLTEXT)。索引也并不是越多越好,可能在查詢的時候很方便,但是在插入和修改操作的時候,可能會出現索引重建的情況。所以索引的使用也要看具體的情況。索引太多了需要考慮哪些不常使用的索引是否有存在的必要,或者使用別的解決方法。
12.拆分大的delete或者insert語句,可以使用批處理,同時這兩個操作會出現鎖表的情況。
13.盡量避免使用大的事務,控制事務的粒度。能提高系統的并發能力。

參考文章:[數據庫SQL優化大總結之 百萬級數據庫優化方案]
加上了部分自己的總結

部分比較好用的MySQL的相關操作,簡單記錄

設置終端MySQL的編碼。
set names"utf8";

輸出查詢結果到文件
into outfile '/tmp/a.csv'

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容