影響數(shù)據(jù)庫性能的根源:
1,磁盤I/O讀取
2,CPU使用率
3,資源競爭
優(yōu)化的方式:
1,設(shè)計優(yōu)化
2,操作優(yōu)化
3,使用其他優(yōu)化技術(shù)
1)設(shè)計優(yōu)化:
分類拆分?jǐn)?shù)據(jù)量大的表;
選取最適用的字段屬性;
索引設(shè)計,為經(jīng)常查詢用到的字段建立索引,避免查詢時查找其他重復(fù)無用的數(shù)據(jù),避免了大范圍掃描;
2)操作優(yōu)化:
鎖表操作;
盡量避免子查詢,將子查詢轉(zhuǎn)化成連接查詢;
where子句查詢條件盡量少使用運算操作;
A>2與A>=3的效果有很大的區(qū)別了,因為A>2時數(shù)據(jù)庫會先找出為2的記錄索引再進(jìn)行比較,而A>=3時ORACLE則直接找到=3的記錄索引;
a is not null 改為 a>0 或a>''等,判斷字段是否為空一般是不會應(yīng)用索引的;
a<>0 改為 a>0 or a<0 ,不等于操作符是永遠(yuǎn)不會用到索引的,因此對它的處理只會產(chǎn)生全表掃描; YY_BH LIKE '%5400%' 這個條件會產(chǎn)生全表掃描,如果改成YY_BH LIKE 'X5400%' OR YY_BH LIKE 'B5400%' 則會利用YY_BH的索引進(jìn)行兩個范圍的查詢,性能肯定大大提高;
WHERE后面的條件順序影響 ,應(yīng)該先把范圍小的條件放前面,在小范圍里面按接下來的條件查找;
3)其他優(yōu)化技術(shù)
使用數(shù)據(jù)緩存技術(shù),如memcached;
使用靜態(tài)存儲,對一些更新不頻繁但經(jīng)常調(diào)用的數(shù)據(jù)采用靜態(tài)文本的存儲方式;