標籤:style blog color os 使用 for ar 資料 div
今天有位網友找我給他原有的系統資料庫最佳化下查詢速度,個人總結了幾點對sqlserver的最佳化
1、Sql查詢語句的最佳化,如:能使用外串連查詢出來的盡量別用內串連...,這些個就不廢話,如果我使用這個給他最佳化的話,那我就還得先瞭解他系統的業務什麼的,花的時間就比較多了,這樣不值。所以打算通過以下2點來最佳化:
2、為表添加索引,這個根據系統實際情況來
3、在系統測試通過後,將外鍵約束刪除(由於他是已經在啟動並執行系統,如果沒有使用外鍵來執行一些觸發器什麼的,這個肯定行得通的)
通過sql可以查詢出指定的表的外鍵名稱,eg.查詢db中SalesOrder表中的外鍵
select name
from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id
where f.parent_object_id=object_id(‘[dbo].[SalesOrder]‘)
這樣就可以看到SalesOrder表中的外鍵了(如果有)
但如果這樣的話,那我不得每個表去查詢,google了下找到一個解決方案,用一條sql語句搞定全部,如下:
--使用SYSREFERENCES--刪除外鍵DECLARE @SQL VARCHAR(100)DECLARE CUR_FK CURSOR LOCAL FORSELECT ‘ALTER TABLE [‘+ OBJECT_NAME(FKEYID) + ‘] drop constraint ‘ + OBJECT_NAME(CONSTID) FROM SYSREFERENCES--刪除所有外鍵OPEN CUR_FKFETCH CUR_FK INTO @SQLWHILE @@FETCH_STATUS =0BEGINEXEC(@SQL)FETCH CUR_FK INTO @SQLENDCLOSE CUR_FKDEALLOCATE CUR_FK
直接執行這個,會將db中所有的外鍵約束刪除
SQL Server 效能最佳化