|
java论坛就是与大家一起谈谈java相关的那些事,其实在java开发中我们接触到最最相关的无非就是数据库的设计与使用了,那么这次我们就来考虑下java项目开发中的mysql数据库的优化问题,性能提高了,我们才真正做到了学为所用,也让我们真正体会到了学习的乐趣与成功,今天无意中看到关于mysql数据库性能优化的问题想一想的确是很重要 对于java编程是不容忽视的一个重要方面。那么mysql的性能优化到底要有哪些原则呢?总结了以下几点,仅供参考。- d, [) ?7 \* i$ i w/ H9 {
1. 为查询缓存优化你的查询8 X! _+ a! R- F! e E4 d
2. EXPLAIN 你的 SELECT 查询' @$ W( a2 f/ g }7 ]' \
3. 当只要一行数据时使用 LIMIT 1
" ~1 ^5 w) ?( o$ J8 d9 A! J' I8 ?4. 为搜索字段建索引
1 T5 T0 J$ R8 X. i/ P9 C$ }# e" o5. 在Join表的时候使用相当类型的例,并将其索引8 ?) g0 s# J `" M4 o
6. 千万不要 ORDER BY RAND()6 H2 H3 U! m% x- B! v6 B8 O* M0 X6 d
7. 避免 SELECT *
1 ?( V! H U1 ] _# {! \1 l8. 永远为每张表设置一个ID
3 {0 N5 t! h, F' }) P' z9. 使用 ENUM 而不是 VARCHAR
0 E1 T4 M' W% h' X' C. ^+ e( @0 ~10. 从 PROCEDURE ANALYSE() 取得建议
. @6 z$ V) j- o0 O" B, L1 q11. 尽可能的使用 NOT NULL5 J( Y- n# d( b0 Q
12. Prepared Statements
5 T2 K# W& c$ H, J13. 无缓冲的查询
) a3 }- W- h$ U: e( p4 ]/ ` ~: h14. 把IP地址存成 UNSIGNED INT* B: @9 S# I L. o. W+ u- b) X
15. 固定长度的表会更快
" c! z( `2 C# e6 P16. 垂直分割6 z9 ?7 x# u* v5 S; k0 H9 b
17. 拆分大的 DELETE 或 INSERT 语句
0 B5 J$ j g# s2 i18. 越小的列会越快% [4 H3 J4 t( Y5 F$ q9 I5 f9 e
19. 选择正确的存储引擎, D3 p# V+ p- I. b8 S
20. 使用一个对象关系映射器(Object Relational Mapper)$ B1 r) Y4 X U: r4 ^- j
21. 小心“永久链接”
; ~% J W) P, R: D) H0 i" C# ?5 b+ I6 F
3 N3 m: s5 [" I1 Y9 f
* R D: F e4 r6 q& o: m3 z. ?. p; B+ O" |3 ?* _9 F
- a/ a6 ^7 m& J |
|