SQL優化之Change語句

INSERT優化

插入行所需的時間由以下因素決定,其中數字表示近似比例:

  • 連接:(3)
  • 向服務器發送查詢:(2)
  • 解析查詢:(2)
  • 插入行:(1×行大小)
  • 插入索引:(1×索引數)
  • 斷開連接:(1)

您可以使用以下方法來加快插入速度:

  • 如果要同時從同一客戶端插入許多行,請使用INSERT具有多個VALUES列表的語句一次插入幾行。這比使用單獨的單行INSERT 語句要快得多(某些情況下要快很多倍)。

  • 從文本文件加載表格時,請使用 LOAD DATA。這通常比使用INSERT語句快20倍 。

  • 利用列的默認值。僅當要插入的值與默認值不同時才明確插入值。這減少了MySQL必須執行的解析,並提高了插入速度。

  • 索引數量越少,插入數據速度越快。要在查詢性能和插入性能之間平衡好,索引的數量至關重要。

UPDATE優化

寫入速度取決於要更新的數據量和要更新的索引數。不會更新未更改的索引。

獲取快速更新的另一種方法是延遲更新,然後在以後連續執行多個更新。如果鎖定表,一起執行多個更新比一次執行一個更新快得多。

對於使用動態行格式(如text,varchar等)的MyISAM表,將行更新爲更長的總長度可能會拆分該行。如果您經常這樣做,那麼偶爾使用OPTIMIZE TABLE非常重要 。

DELETE優化

要從MyISAM表中刪除所有行,TRUNCATE table tbl_name 比 delete from tbl_name快。Truncate操作不是事務安全的;在活動事務或活動表鎖過程中嘗試執行某個操作時會報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章