程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 關於MYSQL優化(持續更新),mysql優化持續更新

關於MYSQL優化(持續更新),mysql優化持續更新

編輯:MySQL綜合教程

關於MYSQL優化(持續更新),mysql優化持續更新


*利用MYSQL數據緩存提高效率,注意事項:

  1.應用環境:不經常改變的表及對此表相同的查詢

  2.不適用於服務器端編寫的語句

  3.根據數據使用頻率,合理分解表

  4.合理使用默認條件,提高命中率

  5.統一SQL語句編寫規范,因為MYSQL解析時區分大小寫

  6.增加服務器緩存空間

 

*為查詢緩存,優化查詢語句:

// 查詢緩存不開啟 
$r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()"); 

// 開啟查詢緩存 
$today = date("Y-m-d"); 
$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'"); 

用變量代替MYSQL函數,開啟緩存

 

*EXPLAIN你的SQL語句,分析查詢效率

*只要一行數據時,使用LIMIT 1

*為不經常添加修改,又經常查詢的字段,添加索引

  很蛋疼的一件事,自行衡量是否添加

*JOIN表的時候,使用相同類型的列,STRING類型,兩表字符集要一致

*不使用 ORDER BY RAND(),性能會指數級下降

// 千萬不要這樣做: 
$r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1"); 

// 這要會更好: 
$r = mysql_query("SELECT count(*) FROM user"); 
$d = mysql_fetch_row($r); 
$rand = mt_rand(0,$d[0] - 1); 

$r = mysql_query("SELECT username FROM user LIMIT $rand, 1");

*避免SELECT *,應該用什麼取什麼,會導致速度變慢及網絡負載加重

*使用VARCHAR類型當主鍵會降低性能,永遠為每張表設置ID,最好為INT型(推薦UNSIGNED),並自增

*為有限取值的列使用ENUM

*選擇性使用PROCEDURE ANALYSE()建議

*盡可能使用NOT NULL

*把IP地址存成UNSIGNED INT

*固定長度的表會更快

*垂直分割,注意分出去的表不經常被JOIN,否則性能會級數下降

*拆分大的DELETE 或 INSERT

*越小的列會越快,比如僅幾條數據的主鍵可采用SMALLINT、TINYINT

*選擇正確的存儲引擎

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved