《Sybase數據庫在UNIX、Windows上的實施和管理》討論6 顯示某個登錄用戶的信息
近來大家討論了一個問題,關於Sybase性能優化中,程序設計和編成對性能的“貢獻率”,索引對性能的“貢獻率”。
顯然,性能和數據庫設計、程序寫法有着極大的關係,如果數據庫沒有好的設計,程序沒有優化的編程,單憑Sybase參數優化、物理優化,這樣的調整不可能有好的性能結果:應用程序、數據庫後臺程序決定了性能的80%,在硬件一定的條件下。
在應用已經確定的情況下,縮短響應時間的最佳辦法是減少物理I/O,其方法來自於判斷索引的有效性、必要性、正確性。總的來說,IO減少會導致性能提升縮短響應時間,而這很大程度上依賴索引:
- 在一定數據量下避免全表掃描。
- 定位查詢中定位數據位置。
- 範圍查詢中確定上下限位置。
- 在索引科完全使用時採用索引覆蓋,完全數據訪問。
- 在連接時避免排序操作。
但不是什麼時候都可以建立索引,一般情況下可以按照下面的原則創建初始的索引,並測試運行其有效性:
- 爲Unique和primary key創建唯一索引,unique創建nonclustered多飲,primary key創建clustered索引;
- 如果可能用索引來覆蓋查詢,則可以使用索引覆蓋來進行查詢操作。
- 如果需要DML操作的表,如果將clustered索引建立了在單調遞增的字段上,如序號列,則則坑農造成索引徵用,如果恰好是allpages表,則鎖爭奪會成爲必然。
- 如果能建立唯一性索引則最好唯一,這樣優化程序知道只要返回一行紀錄即可,及早結束查詢。
- 索引鍵不可以太大,如使用小的數據類型。
- 創建索引時,“誰在前面”很關鍵;
- 應用程序中應儘量使用索引對象,如查詢中引用被索引前導列
這段日子太忙,回覆有些慢,但還是希望對大家有所幫助,文平
我們的工作團隊致力於:
¨ 數據庫+顧問服務