sqlserver語句優化
❶ sqlserver 語法優化
這樣的語句在寫法上的優化應該沒有什麼了,就是檢查一下查詢條件、相關聯欄位及group by 分組欄位有沒有索引,沒有的話可以加上索引來優化。
❷ sqlserver 資料庫優化。
優化Microsoft SQL Server資料庫內存配置
內存是影響Microsoft SQL Server系統性能的一個重要因素,SQL Server資料庫安裝
時將為具有32MB物理內存的機器預設配置16MB可用內存,16MB物理內存的機器預設配置4MB可
用內存。應在Microsoft SQL Server資料庫安裝後進行內存選項(Memory)設置,最大配置值為
為了確定SQL Server系統最適宜的內存需求,可以從總的物理內存中減去Windows
NT4.0需要的內存以及其它一些內存需求後綜合確定,理想的情況是給SQL Server分配盡可能
1?根據物理內存合理規劃SQL Server可用內存
在大多數的生產環境中,伺服器配備的物理內存是64MB~128MB,偶爾也有256MB的,
只要配置恰當是完全可以滿足SQL Server的內存需求的。下表是筆者關於SQL Server內存分配
物理內存 分配給SQL Server 設置值(單位:2KB)
8MB 4MB 2048
16MB 8MB 4096
32MB 16~18MB 8192~9216
48MB 28~34MB 14336~17408
64MB 40~46MB 20480~23552
128MB 100~108MB 51200~55296
256MB 216~226MB 110592~115712
512MB 464~472MB 237568~241664
以下是SQL Server內存選項(Memory)設置方法
(1)從Microsoft SQL Server程序集中啟動SQL Enterprise Manager;
(2)從Server Manager窗口中選擇「Server」菜單選項;
(3)在「Server」菜單中選擇「Configurations」選項;
(4)在「Server Configuration」對話框中選擇」Configuration」標簽,
(5)選中「Memory」項目,在「Current」欄填入新值;
(6)停止並重新啟動SQLServer服務,使設置生效。
2?合理擴充虛擬內存、增大SQL Server可用內存
當SQL Server系統確實需要擴大可用內存時,應在磁碟空間充足的情況下擴充供虛擬
內存,並相應增大 SQL Server可用內存。具體做法是,系統管理員首先擴充伺服器的虛擬內
存,然後再參考上表增大SQL Server可用內存,關鍵是要根據系統的負載情況綜合決定是否擴
3?使用tempinRAM
SQL Server使用tempdb臨時資料庫作為一些查詢連接操作時排序或創建臨時表的工作
空間。將tempdb創建在RAM中可以使系統操作性能有較大提高,而且因為tempdb在每次重啟動
伺服器時都重建,這樣即使有非正常的關閉也是較為安全的,例如停電故障。要將tempdb創建
在RAM中,可以使用sp_configure進行設置,具體用法請參閱有關資料。
由於tempdbinRAM使用的內存是由系統從內存體單獨分配的,與SQL Server的內存選
項設置的可用內存池是分開的,使用tempdbin RAM將減少整個系統的可用內存,應根據SQL
Server和伺服器運行情況進行配置,否則就可能適得其反,影響系統性能。另外,適當增加
tempdb資料庫空間,即使不使用tempdbin RAM,也可以提高資料庫的運行速度。
4?注意事項
(1)建議在生產環境中SQL Server不要設置小於32MB內存,而且資料庫伺服器上盡量
(2)擴充供虛擬內存、增大SQL Server可用內存,應考慮物理內存使用狀況和磁碟空
(3)在可能的情況下,要為系統留有部分額外的內存,這樣在伺服器上打開一個服務
或添加一個進程且不改變SQL Server內存配置時,不致於使NT伺服器的運行速度受到影響(變
得很慢),一般認為最小為2MB最大為20MB。
請採納答案,支持我一下。
❸ 怎樣進行sql資料庫的優化
1、資料庫空間是個概述,在sqlserver里,使用語句 exec sp_spaceused 'TableName' 這個語句來查。
❹ 如何做SqlServer 數據查詢優化!
一、建立索引
二、建立存儲過程
三、只查詢您所需要的數據,不要把所有數據都查詢出來,防止數據冗餘。
四、對於大量及海量數據一般還要建立分區
❺ 如何對sqlserver進行簡單的優化
SQL Server資料庫查詢速度慢的原因有很多,常見的有以下幾種:
1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是資料庫設計的缺陷)
2、I/O吞吐量小,形成了瓶頸效應。
3、沒有創建計算列導致查詢不優化。
4、內存不足
5、網路速度慢
6、查詢出的數據量過大(可以採用多次查詢,其他的方法降低數據量)
7、鎖或者死鎖(這也是查詢慢最常見的問題,是程序設計的缺陷)
8、sp_lock,sp_who,活動的用戶查看,原因是讀寫競爭資源。
9、返回了不必要的行和列
10、查詢語句不好,沒有優化
●可以通過以下方法來優化查詢 :
1、把數據、日誌、索引放到不同的I/O設備上,增加讀取速度,以前可以將Tempdb應放在RAID0上,SQL2000不在支持。數據量(尺寸)越大,提高I/O越重要。
2、縱向、橫向分割表,減少表的尺寸(sp_spaceuse)
3、升級硬體
4、根據查詢條件,建立索引,優化索引、優化訪問方式,限制結果集的數據量。注意填充因子要適當(最好是使用默認值0)。索引應該盡量小,使用位元組數小的列建索引好(參照索引的創建),不要對有限的幾個值的欄位建單一索引如性別欄位。
❻ 怎樣進行sql資料庫的優化
1、資料庫空間是個概述,在sqlserver里,使用語句 exec sp_spaceused 'TableName' 這個語句來查。
❼ 求優化sqlserver語句,使它查詢效率提高。(要求:分組查詢每組最新的一條數據,數據量非常大,幾十萬)
關於題主的SQL語句提高效率的問題,請留意一下幾點
1) 輸出的欄位列表裡只有來自表「dbo.tunnel_online_monitoring 」里的欄位信息,沒有任何來欄位取自表「dbo.Threshold_ElectronicPool」,而且語句也沒為這兩張表指定連接條件,因此將表「dbo.Threshold_ElectronicPool」引入語句中就沒有任何必要,加入該表只會大大增加系統開銷,而無得益,應予以剔除;
2)row_number()函數的系統開銷是比較大的,能不用盡量別用它。
如果dbo.tunnel_online_monitoring.Id是唯一的,可以不使用row_number()函數,建議語句修改如下:
selectId,CreationDate,LastUpdate,tunnel_name,
SDMC,DT,DZSC1,DZSC2,DZSC3from
tunnel_online_monitoringwhereidin(
selectmax(a.id)fromdbo.tunnel_online_monitoringa,
(selecttunnel_name,max(CreationDate)asCreationDatefrom
dbo.tunnel_online_monitoringgroupbytunnel_name)b
wherea.tunnel_name=b.tunnel_nameanda.CreationDate
=b.CreationDategroupbyb.tunnel_name);
如果dbo.tunnel_online_monitoring.Id是自增ID,那麼可以根據ID的大小來判定那條記錄是最新的,這樣就不需要比對時間欄位的先後了,語句可簡化如下:
selectId,CreationDate,LastUpdate,tunnel_name,
SDMC,DT,DZSC1,DZSC2,DZSC3from
tunnel_online_monitoringwhereidin(
selectmax(id)fromdbo.tunnel_online_monitoring
groupbytunnel_name);
如果dbo.tunnel_online_monitoring.Id不是唯一的,那就還是得利用回row_number()函數了。