亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

SQL SERVER優化建議

添加時間:2013-2-25 17:43:36  添加: 思海網絡 

在實際的工作中,尤其是在生產環境里邊,SQL語句的優化問題十分的重要,它對數據庫的性能的提升也起著顯著的作用.我們總是在抱怨機器的性能問題,總是在抱怨并發訪問所帶來的瑣問題,但是如果我們對沒一條SQL語句進行優化,盡管不能說可以解決全部問題,但是至少可以解決大部分問題.

1.Top排序問題.

我們經常要對表某個字段進行排序,然后取前N名.所以我們會寫如下的SQL語句:

select top 100 * from 表

order by Score desc

如果表非常大的話,那么這樣的操作是非常消耗資源的,因為SQL SERVER要對整個表進行排序,然后取前N條記錄.這樣的造作是在Temdb里邊進行的,所以極端的時候會報Log已滿這樣的錯誤.為了避免進行全表的排序,我們要做的僅僅是在Score上建立索引,這樣因為Score索引的葉級是有序的,只要在Score所以的頁級取前100個,然后根據書簽查找到實際的記錄,這樣對DB的性能就會有極大的提升.

2.同一天問題.

我們經常要查找和一個日期同一天的記錄,所以我們回寫如下的SQL語句;

declare @DateTime datetime

set @DateTime=getdate()

select * from 表

where convert(char(10),F_Time,120)=convert(char(10),@DateTime,120)

但是這樣寫的SQL語句帶來的問題就是不能使用F_Time上的索引了.為了近可能的使用F_Time上的索引,我們可以使用時間段查詢的方式來代替上邊的語句.

declare @start datetime

declare @end datetime

declare @datetime datetime

set @datetime=getdate()

set @start=convert(char(10),@datetime,120)  --  一天的其始時間

set @end=dateadd(ss,-1,dateadd(d,1,@start))  --  一天的結束時間

select *

from 表

where F_Time between @start and @end

這樣就解決了使用不上索引的問題.

 3.利用索引進行分組操作.

我們經常要對某一字段進行分組,而對另外一些字段進行聚合操作.如果我們對分組的字段合理的使用索引,可以加快我們分組的速度.下邊以Northwind的Orders表為例:

--  orders表的EmployeeID上建有索引.


select EmployeeID,count(*)
from orders
group by EmployeeID

--  查看執行計劃,此查詢利用了EmployeeID上的索引.如改成如下查詢:

select EmployeeID,sum(Freight)
from orders
group by EmployeeID

--  查看執行計劃,此查詢則沒有使用EmployeeID上的索引.而是使用了全表掃描.那么原因是什么呢?是因為Freight沒有在EmployeeID的索引上,所以通過索引不能得到結果.而如果通過書簽查詢的成本太高,所以SQL SERVER選擇了使用全表掃描.而如果我們執行在EmployeeID和Freight上建立復合索引呢?

create index idx_EmployeeID on Orders(EmployeeID,Freight)

--  再次執行第二個查詢.查看執行計劃.SQL SERVER使用的我們建立的索引.只需要使用索引就可以查詢到結果,極大的提高了我們的查詢速度.

關鍵字:SQL SERVER、數據庫、索引

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站