|
java论坛就是与大家一起谈谈java相关的那些事,其实在java开发中我们接触到最最相关的无非就是数据库的设计与使用了,那么这次我们就来考虑下java项目开发中的mysql数据库的优化问题,性能提高了,我们才真正做到了学为所用,也让我们真正体会到了学习的乐趣与成功,今天无意中看到关于mysql数据库性能优化的问题想一想的确是很重要 对于java编程是不容忽视的一个重要方面。那么mysql的性能优化到底要有哪些原则呢?总结了以下几点,仅供参考。( c5 P3 R* |" ?7 T/ d0 a
1. 为查询缓存优化你的查询
% q/ Z' H( F( w+ D8 R0 `. L+ p2. EXPLAIN 你的 SELECT 查询- s: n% W b% k: A Y+ s3 Y
3. 当只要一行数据时使用 LIMIT 1
3 a7 n+ c: g5 K5 b9 P( |4. 为搜索字段建索引+ b! e$ ]; h: y
5. 在Join表的时候使用相当类型的例,并将其索引
' g. q. U" t5 k, y6. 千万不要 ORDER BY RAND()
% H+ V! {% i U7. 避免 SELECT *
( B2 J+ g1 }6 X4 j. k- K5 w4 g8. 永远为每张表设置一个ID8 d- F5 c- \, T- O4 }, e
9. 使用 ENUM 而不是 VARCHAR
5 w4 H5 X0 O* I10. 从 PROCEDURE ANALYSE() 取得建议' j$ b3 b7 w4 a. f. C$ t
11. 尽可能的使用 NOT NULL
2 |2 }4 a) I! X4 I3 b& |5 U: s! B12. Prepared Statements
4 l! G; ]8 `2 Q9 v( `3 G4 O4 F13. 无缓冲的查询( U% ^2 E) }& U- I/ x
14. 把IP地址存成 UNSIGNED INT, C' \9 o# p* b! a
15. 固定长度的表会更快& L; M$ u$ [9 H/ y- L1 X
16. 垂直分割
/ P8 F, R9 d, m. Q17. 拆分大的 DELETE 或 INSERT 语句
* B3 _ B+ X. X8 d9 z18. 越小的列会越快
5 m% {% C, N, p5 l! P. h$ w$ g19. 选择正确的存储引擎- a* U) I O9 k9 K/ b
20. 使用一个对象关系映射器(Object Relational Mapper)
t$ Z ?8 U4 c3 ^- a21. 小心“永久链接”4 Q5 ` k& F, E
' S: t* N0 Z8 E
" x( A- q# c m" i. f' C$ V$ F# M+ Q7 E, U7 m. a g4 F
' b8 d, a* B% x. {2 q& @% L
/ b4 N' ]9 Y7 E5 V0 }# N# s7 i |
|