1. 從數(shù)據(jù)庫(kù)結(jié)構(gòu)做起1. 字段類型的定義時(shí)遵循以下規(guī)則:1. 選用字段長(zhǎng)度最小2. 優(yōu)先使用定長(zhǎng)型3. 盡可能的定義 "not null" 4. 數(shù)值型字段中避免使用 "zerofill" 5. 如果要儲(chǔ)存的數(shù)據(jù)為字符串, 且可能值已知且有限, 優(yōu)先使用 enum 或 set 2. 索引的優(yōu)化至關(guān)重要(以下如果沒有特殊說明, 均指查詢密集的情況)
1. 被索引的字段的長(zhǎng)度越小, 該索引的效率越高2. 被索引的字段中, 值的重復(fù)越少, 該索引的效率越高3. 查詢語句中, 如果使用了 "group" 子句, 根據(jù)其中字段出現(xiàn)的先后順序建立多字段索引4. 查詢語句中, 如果使用了 "distinct", 根據(jù)其中字段出現(xiàn)的先后順序建立多字段索引5. "where" 子句中, 出現(xiàn)對(duì)同一表中多個(gè)不同字段的 "and" 條件時(shí), 按照字段出現(xiàn)的先后順序建立多字段索引6. "where" 子句中, 出現(xiàn)對(duì)同一表中多個(gè)不同字段的 "or" 條件時(shí), 對(duì)重復(fù)值最少的字段建立單字段索引7. 進(jìn)行 "內(nèi)/外連接" 查詢時(shí), 對(duì) "連接字段" 建立索引8. 對(duì) "主鍵" 的 "unique" 索引 毫無意義, 不要使用9. 被索引字段盡可能的使用 "not null" 屬性10. 對(duì)寫入密集型表, 盡量減少索引, 尤其是 "多字段索引" 和 "unique" 索引2. 查詢語句的優(yōu)化1. 多多利用 "explain" 查詢索引使用情況, 以便找出最佳的查詢語句寫法和索引設(shè)置方案2. 慎用 "select *", 查詢時(shí)只選出必須字段3. 查詢使用索引時(shí), 所遍歷的索引條數(shù)越少, 索引字段長(zhǎng)度越小, 查詢效率越高 (可使用 "explain" 查詢索引使用情況)
4. 避免使用 mysql 函數(shù)對(duì)查詢結(jié)果進(jìn)行處理, 將這些處理交給客戶端程序負(fù)責(zé)5. 使用 "limit" 時(shí)候, 盡量使 "limit" 出的部分位于整個(gè)結(jié)果集的前部, 這樣的查詢速度更快, 系統(tǒng)資源開銷更低6. 在 "where" 子句中使用多個(gè)字段的 "and" 條件時(shí), 各個(gè)字段出現(xiàn)的先后順序要與多字段索引中的順序相符7. 在 "where" 子句 中使用 "like" 時(shí), 只有當(dāng)通配符不出現(xiàn)在條件的最左端時(shí)才會(huì)使用索引8. 在 mysql 4.1 以上版本中, 避免使用子查詢, 盡量使用 "內(nèi)/外連接" 實(shí)現(xiàn)此功能9. 減少函數(shù)的使用, 如果可能的話, 盡量用單純的表達(dá)式來代替10. 避免在 "where" 子句中, 對(duì)不同字段進(jìn)行 "or" 條件查詢, 將其拆分成多個(gè)單一字段的查詢語句效率更高。
| mysql 字段長(zhǎng)度說明 | |||
|---|---|---|---|
| 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) | 值長(zhǎng)度 + 1 字節(jié) |
| tinyblob | 值長(zhǎng)度 + 1 字節(jié) | tinytext | 值長(zhǎng)度 + 1 字節(jié) |
| blob | 值長(zhǎng)度 + 2 字節(jié) | text | 值長(zhǎng)度 + 2 字節(jié) |
| mediumblob | 值長(zhǎng)度 + 3 字節(jié) | mediumtext | 值長(zhǎng)度 + 3 字節(jié) |
| longblob | 值長(zhǎng)度 + 4 字節(jié) | longtext | 值長(zhǎng)度 + 4 字節(jié) |
| enum | 1 或 2 字節(jié) 取決于枚舉值數(shù) | set | 1,2,3,4, 8 取決于成員數(shù)量 |
新聞熱點(diǎn)
疑難解答
圖片精選