數據庫優化法

數據庫優化

1. SQL查詢優化

  • 避免全表掃描,應考慮在 where 及 order by 涉及的列上建立索引
  • 查詢時使用select明確指明所要查詢的字段,避免使用select *的操作
  • SQL語句儘量大寫,如SELECT name FROM t WHERE id=1
  • 儘量避免在 where 子句中使用!=或<>操作符, MySQL只有對以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些時候的LIKE,如SELECT id FROM t WHERE name LIKE ‘abc%’
  • 對於模糊查詢,如:SELECT id FROM t WHERE name LIKE ‘%abc%’將導致全表掃描,應避免使用,若要提高效率,可以考慮全文檢索
  • 遵循最左原則,在where子句中寫查詢條件時把索引字段放在前面
  • 能使用關聯查詢解決的儘量不要使用子查詢,能不使用關聯查詢的儘量不要使用關聯查詢
  • 不需要獲取全表數據的時候,不要查詢全表數據,使用LIMIT來限制數據

2. 數據庫優化

對於表結構

  • 在進行表設計時,可適度增加冗餘字段(反範式設計),減少JOIN操作;
  • 多字段表可以進行垂直分表優化,多數據表可以進行水平分表優化;
  • 選擇恰當的數據類型,如整型的選擇;

對於SQL語句

  • 編寫SQL時使用上面的方式對SQL語句進行優化;
  • 使用慢查詢工具找出效率低下的SQL語句進行優化;

對於索引

  • 對較頻繁的作爲查詢條件的字段創建索引;唯一性太差的字段不適合單獨創建索引,即使頻繁作爲查詢條件;更新非常頻繁的字段不適合創建索引;

對於引擎

  • 對於強調快速讀取的操作,可以考慮使用MyISAM數據庫引擎;

其他

  • 構建緩存,減少數據庫磁盤操作;
  • 可以考慮結合使用內在型數據庫,如Redis,進行混合存儲
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章