|
java论坛就是与大家一起谈谈java相关的那些事,其实在java开发中我们接触到最最相关的无非就是数据库的设计与使用了,那么这次我们就来考虑下java项目开发中的mysql数据库的优化问题,性能提高了,我们才真正做到了学为所用,也让我们真正体会到了学习的乐趣与成功,今天无意中看到关于mysql数据库性能优化的问题想一想的确是很重要 对于java编程是不容忽视的一个重要方面。那么mysql的性能优化到底要有哪些原则呢?总结了以下几点,仅供参考。
" K0 i+ w* i5 t. R3 e- \1. 为查询缓存优化你的查询0 V# T1 X- M/ C* f
2. EXPLAIN 你的 SELECT 查询+ S" m, E" [. _, b( F$ Y
3. 当只要一行数据时使用 LIMIT 1
4 y2 W7 ^/ Q G: m5 s8 l" k2 Y4. 为搜索字段建索引8 A" q8 B6 D( C. U" y9 f( {' `
5. 在Join表的时候使用相当类型的例,并将其索引3 p& j+ E$ \! y* j6 Z- ]$ ^! |! K8 [
6. 千万不要 ORDER BY RAND()
y( [! w3 ]0 E7. 避免 SELECT *
, }0 L3 a/ \; g$ M/ Z8. 永远为每张表设置一个ID# T4 ^& K; p& x1 N# \3 t; j- ?
9. 使用 ENUM 而不是 VARCHAR! b4 E+ X9 J. Q: l9 ~8 m
10. 从 PROCEDURE ANALYSE() 取得建议
+ ]0 Q8 b7 j2 @% ^) R% z11. 尽可能的使用 NOT NULL9 f) q6 Z! F: k
12. Prepared Statements8 T; N- W1 `7 _/ f
13. 无缓冲的查询
$ ~6 w4 n6 K5 e3 L3 C" o" d/ c14. 把IP地址存成 UNSIGNED INT# P, |" H8 _ ]: t
15. 固定长度的表会更快" R t( A2 @: F& y( B5 G
16. 垂直分割
' s5 V/ x, ?6 G9 U% V9 `17. 拆分大的 DELETE 或 INSERT 语句 [! S; f! Y' d5 A4 v
18. 越小的列会越快: a# ` c' m" |+ c% T
19. 选择正确的存储引擎 C2 b1 W: U; w y8 r
20. 使用一个对象关系映射器(Object Relational Mapper)# m& D, j$ V; Q7 {+ R4 G5 ]5 _
21. 小心“永久链接”! B" m2 h! V4 [ D: W
0 B+ k" T$ Z# W( d0 O" S" B
# ^- i% p* Q2 q4 k4 @ n; C6 B/ B- f2 w
, p. f$ _& d) I1 M# y4 y, }% J1 ~6 _& k& p
3 w8 {( \( Y2 u6 j' x" a2 n( b, { |
|