自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL SERVER分區(qū)視圖

數(shù)據(jù)庫 SQL Server
SQL SERVER分區(qū)視圖實現(xiàn)了數(shù)據(jù)的快速定位,對SQL中的表進行集中管理,讓大數(shù)據(jù)量管理成為了可能,提高了查詢的速度。

借助SQL SERVER分區(qū)視圖,可以對SQL中的表進行集中管理,下文將以實例的方式為您詳解SQL SERVER分區(qū)視圖,希望對您學習SQL數(shù)據(jù)庫能有所幫助。

SQL SERVER分區(qū)視圖給我們提供了一種實現(xiàn)大數(shù)據(jù)量管理的方法,類似于其它數(shù)據(jù)庫管理系統(tǒng)的分區(qū)視圖。不僅實現(xiàn)了表的集中管理,而且實現(xiàn)了數(shù)據(jù)的快速定位。下邊我就以一個日志記錄表為例來說以下分區(qū)視圖的作用:

日志記錄表可以記錄很長時間的日志信息,隨著時間的推移,日志表會變的很大。這樣對與表的查詢和維護操作都是非常慢的,但是如果我們按日期來劃分把表分成若干小表,而在邏輯上統(tǒng)一使用一個視圖來查詢管理,那么是非常方便的.而且SQL SERVER可以根據(jù)查詢的條件來自動的定位表,這樣也就提高了查詢的速度.

-- 首先我們要實現(xiàn)的是一個記錄日志的存儲過程,這個存儲過程不是簡單的把日志插入,還要按當前日期來判斷-- 表是否存在,然后動態(tài)的建立表,并按分區(qū)表的規(guī)則建立CHECK約束.在此例中,我們使用的是按周的日期來-- 規(guī)定表的名稱如下:dbo.[20061218-20061224]

  1. use TestDB  
  2. if exists (select name from sysobjects where name = 'P_LogWriter' and type = 'P')  
  3.    drop proc dbo.P_LogWriter  
  4. go  
  5. ----Log日志文件  
  6.  
  7. create proc dbo.P_LogWriter  
  8. @desc varchar(1000)  
  9. as  
  10. begin tran  
  11. set nocount on  
  12.  
  13. declare @wk_start datetime,@wk_end datetime  
  14. declare @str_start varchar(50),@str_end varchar(50)  
  15. declare @tb_name varchar(100),@sql varchar(4000)  
  16.  
  17. -- 周的開始日期  
  18. set @wk_start=dateadd(d,2-datepart(dw,getdate()),convert(char(10),getdate(),120))  
  19. -- 周的結(jié)束日期  
  20. set @wk_end=dateadd(s,-1,dateadd(wk,1,@wk_start))  
  21.  
  22. set @str_start=convert(varchar(50),@wk_start,120)  
  23. set @str_end=convert(varchar(50),@wk_end,120)  
  24.  
  25. -- 表的名稱  
  26. set @tb_name=convert(varchar(10),@wk_start,112)+'-'+convert(varchar(10),@wk_end,112)  
  27.  
  28. -- 如果表不存在,就建立表  
  29. if not exists(select 1 from sysobjects where name=@tb_name and xtype='U')  
  30. begin  
  31.    set @sql='create table dbo.['+@tb_name+'](id int identity(1,1),updatetime datetime primary key check(updatetime between '''+@str_start+''' and '''+@str_end+'''),[desc] varchar(1000))'  
  32.    --print @sql  
  33.    exec(@sql)  
  34. end  
  35.  
  36. -- 插入相應(yīng)的日志數(shù)據(jù)  
  37. set @sql='insert ['+@tb_name+'](updatetime,[desc]) select getdate(),'''+@desc+''''  
  38. exec(@sql)  
  39.  
  40. set nocount off  
  41. commit tran  
  42. Go  
  43.  

#p#-- 創(chuàng)建分區(qū)視圖

  1. create view v_Log  
  2. as  
  3. select * from dbo.[20061218-20061224]  
  4. union all  
  5. select * from dbo.[20061225-20061231]  
  6. Go 

-- 查詢分區(qū)視圖

  1. select * from v_Log  
  2. where updatetime<'2006-12-24 11:21:27.653' 

-- 通過分析查詢的執(zhí)行計劃我們可以看到,SQL SERVER可以自動定位相應(yīng)的表取得數(shù)據(jù),從而提高了查詢的-- 速度.
 

 

 

【編輯推薦】

教您如何使用SQL中的函數(shù)替代游標

創(chuàng)建SQL函數(shù)的實例

SQL中返回計算表達式的函數(shù)

SQL中循環(huán)語句的效果實例

SQL中類似For循環(huán)處理的實例

責任編輯:段燃 來源: CSDN博客
相關(guān)推薦

2010-06-30 16:58:24

SQL Server分

2011-04-02 17:21:29

sql server視圖

2010-07-14 10:11:30

SQL Server系

2010-11-12 11:19:19

SQL Server視

2010-09-27 09:54:26

Sql Server視

2010-07-19 16:36:13

SQL Server視

2010-11-10 14:47:11

SQL Server創(chuàng)

2009-07-02 12:57:00

SQL Server視

2010-11-11 17:20:51

SQL Server創(chuàng)

2010-07-19 09:31:53

SQL Server系

2010-07-07 13:18:13

SQL Server視

2010-07-12 10:34:58

SQL Server視

2010-10-21 15:07:09

SQL Server系

2010-11-11 17:15:13

SQL Server視

2010-11-11 16:59:59

SQL Server視

2011-07-06 13:09:11

SQL Server

2010-11-10 14:35:17

SQL Server創(chuàng)

2011-03-21 10:13:31

Sql Server數(shù)分區(qū)

2010-07-15 15:42:38

2010-11-12 11:25:44

SQL SERVER視
點贊
收藏

51CTO技術(shù)棧公眾號