優化查詢資料庫
A. SQL資料庫查詢的優化
這個問題太大了,不懂就加內存,加CPU,用RAID存儲。
B. 怎樣改進資料庫的查詢性能
1、使你的資料庫結構規范化,但是不要求一定達到第三範式,為了顯示和列印目的可以有數據冗餘2、評估你的系統中對性能影響的關鍵處,減少被頻繁訪問的核心表的數量,並在這些核心
表上重點優化索引,表結構(盡量緊湊)。典型的核心表是代碼表。
3、對於統計類應用,如果可能應寫成觸發器和存儲過程,這樣就有可能把一個消耗大量時
間的統計運算分布到每INSERT,DELETE,或者UPDATE來處理,從而極大提高查詢類操作的速度。
查詢選擇群居索引最有效。其他索引也要針對業務進行選擇。由於維護索引也要消耗系
統資源和時間,所以過多的索引對性能是損害甚至是毫無效果的。
5、如果可能,可以利用大資料庫對SQL的一些特殊規定來進一步優化,比如查詢暗示。
6、適當選擇硬體,綜合考慮CPU,內存,I/O系統的性能,以當前的CPU,內存配置來看,
很多資料庫系統的瓶頸出在I/O系統上。所以如果有可能,最好使用RAID。
當然如果你有足夠的財力,可以買更好的伺服器,或者搞伺服器集群就更利害啦。
7、可能的話,盡量使用存儲過程,因為存儲過程的執行計劃可以重復使用,而且不需要
象普通由CLIENT提交的SQL那樣進行處理和編譯。
8、檢查你的應用程序設計,如果有可能,盡量減少查詢次數和在網路上往返的數據。為了
獲取少量欄位而寫SELECT * 對性能的損害也比較利害。
9、在應用程序中協調並發和一致性之間的矛盾。並不是所有業務都需要放在事務中。大量
業務是允許臟讀的,在不關鍵事務中使用臟讀,或者讀提交,可以大大降低DEADLOCK和
進程之間彼此等待的機會,從而把由於互相鎖定資源引起的等待降低到最小。
不要在事務執行中進行大量計算或者與用戶交互的操作,因為事務的執行在要求上是
不允許被打斷的原子操作(回滾是失敗的),所以事務應該多而短小。長事務會鎖住
很多資源比較長的時間,因此也比較容易導致其他進程對資源的等待和死鎖的機會。
10、評估你開發系統的關鍵業務,在很多資料庫系統對性能的要求是彼此矛盾的,比如OLTP
應用和DSS是不同的。DSS傾向於使用各種索引加快檢索速度,而大量的索引對OLTP則是負擔。
11、不要在應用程序中寫怪異的SQL 查詢,比如 WHERE money!40000,這樣的語句,這種
SQL查詢,資料庫的SQL優化器是無法進行優化的。
12、定期維護和管理你的資料庫系統,壓縮掉那些垃圾空間,很多資料庫系統執行類似
刪除,事務等操作的時候,並不回收無用的物理空間。所以,制定一份合理的資料庫
維護計劃,不要等日誌文件或者LOG文件越長越大的時候才去整理資料庫。
還有很多很多要注意的東西,。。。。。。
C. SQL資料庫優化的方法有哪些
在進行軟體開發過程中,資料庫的使用是非常重要的,但是資料庫有很多種,不同資料庫的使用方法是不同的。進行軟體開發過程中,至少需要掌握一種資料庫的使用方法。SQL資料庫語法簡單、操作方便和高效,是很多人最優的選擇,但是SQL語句會受到不同資料庫功能的影響,在計算時間和語言的效率上面需要進行優化,根據實際情況進行調整。下面電腦培訓為大家介紹SQL資料庫的優化方法。
一、適當的索引
索引基本上是一種數據結構,有助於加速整個數據檢索過程。唯一索引是創建不重疊的數據列的索引。正確的索引可以更快地訪問資料庫,但是索引太多或沒有索引會導致錯誤的結果。IT培訓認為如果沒有索引,處理速度會變得非常慢。
二、僅索引相關數據
指定需要檢索數據的精度。使用命令*和LIMIT代替SELECT*。調整資料庫時,必須使用所需的數據集而不是整個數據集,尤其是當數據源非常大時,指定所需的數據集,能夠節省大部分時間。
三、根據需求使用或避免臨時表
如果代碼可以用簡單的方式編寫,那麼永遠不要使臨時表變得復雜。當然,如果數據具有需要多個查詢的特定程序,北大青鳥建議在這種情況下,使用臨時表。臨時表通常由子查詢交替。
四、避免編碼循環
避免編碼循環是非常重要的,因為它會減慢整個序列的速度。通過使用具有單行的唯一UPDATE或INSERT命令來避免編碼循環,並且昆明北大青鳥發現WHERE命令能夠確保存儲的數據不被更新,這樣能夠方便在找到匹配和預先存在的數據時被找到。