Mysql的優(yōu)化方法
Mysql的優(yōu)化方法:
1. 從數(shù)據(jù)庫結(jié)構(gòu)做起1. 字段類型的定義時遵循以下規(guī)則:1. 選用字段長度最小2. 優(yōu)先使用定長型3. 盡可能的定義 "NOT NULL" 4. 數(shù)值型字段中避免使用 "ZEROFILL" 5. 如果要儲存的數(shù)據(jù)為字符串, 且可能值已知且有限, 優(yōu)先使用 enum 或 set 2. 索引的優(yōu)化至關重要(以下如果沒有特殊說明, 均指查詢密集的情況)
1. 被索引的字段的長度越小, 該索引的效率越高2. 被索引的字段中, 值的重復越少, 該索引的效率越高3. 查詢語句中, 如果使用了 "group" 子句, 根據(jù)其中字段出現(xiàn)的先后順序建立多字段索引4. 查詢語句中, 如果使用了 "distinct", 根據(jù)其中字段出現(xiàn)的先后順序建立多字段索引5. "where" 子句中, 出現(xiàn)對同一表中多個不同字段的 "and" 條件時, 按照字段出現(xiàn)的先后順序建立多字段索引6. "where" 子句中, 出現(xiàn)對同一表中多個不同字段的 "or" 條件時, 對重復值最少的字段建立單字段索引7. 進行 "內(nèi)/外連接" 查詢時, 對 "連接字段" 建立索引8. 對 "主鍵" 的 "unique" 索引 毫無意義, 不要使用9. 被索引字段盡可能的使用 "NOT NULL" 屬性10. 對寫入密集型表, 盡量減少索引, 尤其是 "多字段索引" 和 "unique" 索引2. 查詢語句的優(yōu)化1. 多多利用 "explain" 查詢索引使用情況, 以便找出最佳的查詢語句寫法和索引設置方案2. 慎用 "select *", 查詢時只選出必須字段3. 查詢使用索引時, 所遍歷的索引條數(shù)越少, 索引字段長度越小, 查詢效率越高 (可使用 "explain" 查詢索引使用情況)
4. 避免使用 mysql 函數(shù)對查詢結(jié)果進行處理, 將這些處理交給客戶端程序負責5. 使用 "limit" 時候, 盡量使 "limit" 出的部分位于整個結(jié)果集的前部, 這樣的查詢速度更快, 系統(tǒng)資源開銷更低6. 在 "where" 子句中使用多個字段的 "and" 條件時, 各個字段出現(xiàn)的先后順序要與多字段索引中的順序相符7. 在 "where" 子句 中使用 "like" 時, 只有當通配符不出現(xiàn)在條件的最左端時才會使用索引8. 在 mysql 4.1 以上版本中, 避免使用子查詢, 盡量使用 "內(nèi)/外連接" 實現(xiàn)此功能9. 減少函數(shù)的使用, 如果可能的話, 盡量用單純的表達式來代替10. 避免在 "where" 子句中, 對不同字段進行 "or" 條件查詢, 將其拆分成多個單一字段的查詢語句效率更高。
Mysql 字段長度說明 | |||
---|---|---|---|
TINYINT | 1 字節(jié) | SMALLINT | 2 字節(jié) |
MEDIUMINT | 3 字節(jié) | INTEGER: | 4 字節(jié) |
BIGINT | 8 字節(jié) | DOUBLE | 8 字節(jié) |
FLOAT(X) | X <=24: 4 字節(jié) X > 24: 8 字節(jié) |
DECIMAL(M,D) | M<D: D+2 字節(jié) M>=D: M 字節(jié) |
DATE | 3 字節(jié) | DATETIME | 8 字節(jié) |
TIMESTAMP | 4 字節(jié) | TIME | 4 字節(jié) |
YEAR | 1 字節(jié) | ||
CHAR(M) | M 字節(jié) | VARCHAR(M) | 值長度 + 1 字節(jié) |
TINYBLOB | 值長度 + 1 字節(jié) | TINYTEXT | 值長度 + 1 字節(jié) |
BLOB | 值長度 + 2 字節(jié) | TEXT | 值長度 + 2 字節(jié) |
MEDIUMBLOB | 值長度 + 3 字節(jié) | MEDIUMTEXT | 值長度 + 3 字節(jié) |
LONGBLOB | 值長度 + 4 字節(jié) | LONGTEXT | 值長度 + 4 字節(jié) |
ENUM | 1 或 2 字節(jié) 取決于枚舉值數(shù) |
SET | 1,2,3,4, 8 取決于成員數(shù)量
|
新文章:
- CentOS7下圖形配置網(wǎng)絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解