影響數據庫性能的根源:
1,磁盤I/O讀取
2,CPU使用率
3,資源競爭
優化的方式:
1,設計優化
2,操作優化
3,使用其他優化技術
1)設計優化:
分類拆分數據量大的表;
選取最適用的字段屬性;
索引設計,為經常查詢用到的字段建立索引,避免查詢時查找其他重復無用的數據,避免了大范圍掃描;
2)操作優化:
鎖表操作;
盡量避免子查詢,將子查詢轉化成連接查詢;
where子句查詢條件盡量少使用運算操作;
A>2與A>=3的效果有很大的區別了,因為A>2時數據庫會先找出為2的記錄索引再進行比較,而A>=3時ORACLE則直接找到=3的記錄索引;
a is not null 改為 a>0 或a>''等,判斷字段是否為空一般是不會應用索引的;
a<>0 改為 a>0 or a<0 ,不等於操作符是永遠不會用到索引的,因此對它的處理只會產生全表掃描; YY_BH LIKE '%5400%' 這個條件會產生全表掃描,如果改成YY_BH LIKE 'X5400%' OR YY_BH LIKE 'B5400%' 則會利用YY_BH的索引進行兩個范圍的查詢,性能肯定大大提高;
以下三條sql語句的效果是等效的:
代碼如下 復制代碼SELECT * FROM `logs` WHERE id = 1 or id = 2 or id = 3
SELECT * FROM `logs` WHERE id between 1 and 3
SELECT * FROM `logs` WHERE id in (1,2,3)
經過測試性能也是差不多,如果id是一個大數組那麼最後一條書寫會簡單很多,可以利用
WHERE後面的條件順序影響 ,應該先把范圍小的條件放前面,在小范圍裡面按接下來的條件查找;
3)其他優化技術
使用數據緩存技術,如memcached;
使用靜態存儲,對一些更新不頻繁但經常調用的數據采用靜態文本的存儲方式;