Sql的一些優化

樓主現在大三,在北京的一個公司實習。前一段時間參與一個系統,使用的MySQL的的和業務邏輯比較複雜,項目運行時明顯速度很慢,所以用本來的知識和新收集的一些知識進行了一些優化,

  • 1.首主最主要的當然是減少和數據庫的連接。
    系統中使用的的的MyBatis和懶加載來避免進行多次數據庫連接。但是當數據量大的時候一定要進行拆分
  • 2.建立索引
    通過對查詢進行優化,要儘量避免全表掃描,首先應考慮在其中及順序涉及的列上建立索引時,InnoDB的的的索引是乙樹數據結構。空間索引使用ř樹,R樹是用於索引多維數據的專利數據結構索引記錄存儲在其乙樹或 - [R樹數據結構的葉頁中索引頁的默認大小爲16KB在這裏不詳細說要注意的是索引的最左前綴原則
    最左前綴:顧名思義,就是最左優先,我們創建了(A,B,C)多列索引,相當於創建了的(A)中單列索引,(A,B組合引以及(A,B,C )組合索引。
  • 3.避免在哪裏子句中使用或來連接條件如果一個字段有索引,一個字段沒有索引,將導致引擎放棄使用索引而進行全表掃描。
  • 4.exit代替in
  • 5.後面有兩個並且其中一個沒有索引。用union all代替或
  • 6.不要在哪裏子句中的“=”左邊進行函數,算術運算或其他表達式運算,否則系統將可能無法正確使用索引
  • 7.對於多張大數據量(這裏幾百條就算大了)的表JOIN,要先分頁再加入,否則邏輯讀會很高,性能很差
  • 8.從表中選擇計數(*);這樣不帶任何條件的計數會引起全表掃描,並且沒有任何業務意義,是一定要杜絕的
  • 9.儘量避免大事務操作,提高系統併發能力。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章