|
java论坛就是与大家一起谈谈java相关的那些事,其实在java开发中我们接触到最最相关的无非就是数据库的设计与使用了,那么这次我们就来考虑下java项目开发中的mysql数据库的优化问题,性能提高了,我们才真正做到了学为所用,也让我们真正体会到了学习的乐趣与成功,今天无意中看到关于mysql数据库性能优化的问题想一想的确是很重要 对于java编程是不容忽视的一个重要方面。那么mysql的性能优化到底要有哪些原则呢?总结了以下几点,仅供参考。+ @0 F8 j- z1 ]. _. A7 q: L
1. 为查询缓存优化你的查询% ?2 G6 E( {5 j+ C# e
2. EXPLAIN 你的 SELECT 查询; t2 J& k0 C* J3 q8 j
3. 当只要一行数据时使用 LIMIT 1* H4 h. k; N0 z+ w: R. H l
4. 为搜索字段建索引$ s/ s$ f9 u; X6 ~/ P: O! a4 w$ w
5. 在Join表的时候使用相当类型的例,并将其索引) v n( Y% T: B* G4 p
6. 千万不要 ORDER BY RAND()
6 C# _0 a& {# I. h0 n5 a" d; @5 E+ N7. 避免 SELECT *
) p$ C7 f# o9 I7 j( J7 d! g8. 永远为每张表设置一个ID1 i [: ^+ ]9 L
9. 使用 ENUM 而不是 VARCHAR. V2 S, [ c+ _3 V" n2 F
10. 从 PROCEDURE ANALYSE() 取得建议0 e) y( d1 l' B2 `9 |+ `0 A% u) c
11. 尽可能的使用 NOT NULL7 @* Y- L6 s4 [, T( t
12. Prepared Statements$ n: i1 ~5 M* T
13. 无缓冲的查询7 D) O7 K3 T- E3 `/ t) q, M
14. 把IP地址存成 UNSIGNED INT
$ c1 B2 v7 f# P9 K+ m, T15. 固定长度的表会更快
8 @3 V) r' t+ H) M. q16. 垂直分割
: v# R7 B8 M+ s% u17. 拆分大的 DELETE 或 INSERT 语句7 F: V- b0 Q8 T+ k" a
18. 越小的列会越快5 n$ c+ k# A" { ]7 N/ }
19. 选择正确的存储引擎. b% ?0 F9 S# Y8 n8 A" e" R! l
20. 使用一个对象关系映射器(Object Relational Mapper)) N: T/ J6 x7 d, f4 i1 n
21. 小心“永久链接”
7 J% x( X* a, N- ] |, C% Y, G) u0 R" M# C5 V) S1 Q4 }
9 R2 {( B' |. Q7 G' m9 V. I- R
. Z' k( R' c+ O; M2 C
4 G$ O7 a" s1 `( l; c' w
2 ~ ?5 v% Z) b |
|