資料庫的最佳化tips,資料庫最佳化tips

來源:互聯網
上載者:User

資料庫的最佳化tips,資料庫最佳化tips
資料庫   TIPS::
1、用於記錄或者是資料分析的表建立時::使用Id作為主鍵,1,2,3...表示訊息條數,使用者帳號id用於做外鍵,一個使用者對應唯一個accountId
                                    一個accountId可以對應多條資料;
                                    
2、建立索引::    例如需要根據註冊版本號碼和註冊遊戲ID來查詢另外一些欄位的時候,就可以根據版本號碼和遊戲ID來建立索引::相當於就是根據查詢條件來建索引;


3、資料庫查詢最佳化::  (1)、慎用 SELECT DISTINCT,從屬記錄集中排除重複記錄時,才使用DISTINCT;
            (2)、選擇最優效率的表名順序 SQLSERVER從右至左的順序處理FROM子句中的表名;當from子句中包含多個表的情況下,必須選擇記錄最少的表作為基礎資料表,即把資料少的表放在最後;(註:有三個以上的表串連查詢,則需要選擇交叉表作為基礎資料表)
            
4、使用表的別名(Alias)::串連多個表是,使用別名把別名首碼於每個Column上


5、最好使用可SARG作為WHERE搜尋條件::        例如列和常量之間的比較。在WHERE子句裡不可SARG的搜尋條件如"IS NULL", "<>", "!=", "!>", "!<", "NOT", "NOT EXISTS", "NOT IN", "NOT LIKE"和"LIKE '%500'",通常(但不總是)會阻止查詢最佳化工具使用索引執行搜尋。另外在列上使用包括函數的運算式、兩邊都使用相同列的運算式、或和一個列(不是常量)比較的運算式,都是不可SARG的。   (註::如果你不知道特定的WHERE查詢字句是不是可SARG,可以在查詢分析器裡檢查查詢執行計畫)


6、WHERE字句中的串連順序::       SQLSERVER採用自下而上的順序解析WHERE字句,所以表之間的串連必須寫在其他WHERE條件之前,可以過濾最多資料記錄的條件必須寫在WHERE子句的末尾。  


7、避免使用困難的正規運算式::  


8、 避免對大型資料表行資料的順序存取::    




9、正確使用UNION和UNION ALL:: 使用UNION時、相當於在結果集上執行SELECT DISTINT,UNION將聯合兩個相類似的記錄表,然後搜尋重複的記錄並排除;;; 如果搜尋的聯合記錄集中木有重複記錄,則使用UNION ALL。      


10、EXISTS和IN的使用::  基於基礎資料表的查詢中,為了滿足一個條件,往往需要對另一個表進行串連,在這種情況下,使用EXISTS(或NOT EXISTS)通常將提高查詢的效率。


11、用預存程序代替直接寫查詢語句::減少網路流量和回應時間,提升應用程式效能;
   
12、預存程序名不要以sp_開頭::這個特別的首碼是為系統預存程序保留的,使用者定義的儲存過的運行,會稍微降低一些執行效率。


13、儲存古城的擁有者要相同::      同一預存程序裡調用的所有對象的擁有者都應該相同,DBO更合適。

14、讓食物儘可能的短:: 保持TSQL事務儘可能的短,這會減少鎖的數量。


15、tinyint(0-255、-128 - 127 1位元組);smallint(0-65535、-32768 - 32767 2位元組)
    mediumint(0-16777215,-8388608 - 8388607 4位元組);int(0-4294967295、-2147483648 - 2147483647 8位元組)

怎最佳化資料庫

設計資料庫要滿足三大範式:第一範式:
1、內容相似的資料列必須消除(消除的辦法就是再建立一個資料表來存放他們,建立關聯關係)
2、必須為每一組相關資料分別建立一個表
3、每條資料記錄必須用一個主鍵來標示

第二範式:
1、只要資料列裡面的內容出現重複,就意味著應該把表拆分為多個表
2、拆分形成的表必須用外部索引鍵關聯起來。

第三範式:
1、與主鍵沒有直接關係的資料列必須消除(消除的辦法就是再建立一個表來存放他們)
 
資料庫怎最佳化

維護語句

DBCC DBREINDEX 重建指定資料庫中表的一個或多個索引
DBCC DBREPAIR 除去損壞的資料庫
DBCC INDEXDEFRAG 整理指定的表或視圖的叢集索引和輔助索引片段
DBCC SHRINKDATABASE 收縮指定資料庫中的資料檔案大小
DBCC SHRINKFILE 收縮相關資料庫的指定資料檔案或記錄檔大小
DBCC UPDATEUSAGE 報告和更正 sysindexes 表的不正確內容,
該內容可能會導致通過 sp_spaceused
系統預存程序產生不正確的空間使用報表

狀態語句
DBCC INPUTBUFFER 顯示從用戶端發送到MS SQL Server 的最後一個語句
DBCC OPENTRAN 如果在指定資料庫記憶體在最舊的活動事務和最舊的分布和非分布式複製事務,
則顯示與之相關的資訊。只有當存在活動事務或資料庫包含複製資訊時,
才顯示結果。如果沒有活動事務,就顯示資訊性訊息
DBCC OUTPUTBUFFER 以十六進位或 ASCII 格式返回指定系統進程 ID (SPID) 的當前輸出緩衝區
DBCC PROCCACHE 以報表形式顯示有關過程快取的資訊
DBCC SHOWCONTIG 顯示指定的表的資料和索引的片段資訊
DBCC SHOW_STATISTICS 顯示指定表上的指定目標的當前分布統計資訊
DBCC SQLPERF 提供有關所有資料庫中的交易記錄空間使用方式的統計資訊
DBCC TRACESTATUS 顯示跟蹤標記的狀態
DBCC USEROPTIONS 返回當前串連的活動(設定)的 SET 選項

驗證語句
DBCC CHECKALLOC 檢查指定資料庫的磁碟空間分配結構的一致性
DBCC CHECKCATALOG 檢查指定資料庫中的系統資料表內及系統資料表間的一致性
DBCC CHECKCONSTRAINTS 檢查指定表上的指定約束或所有約束的完整性
DBCC CHECKDB 檢查指定資料庫中的所有對象的分配和結構完整性
DBCC CHECKFILEGROUP 檢查指定檔案組中的所有表(在當前資料庫中)的分配和結構完整性
DBCC CHECKIDENT ......餘下全文>>
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.