狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SQL SERVER分區視圖

admin
2011年5月4日 23:32 本文熱度 2729
借助SQL SERVER分區視圖,可以對SQL中的表進行集中管理,下文將以實例的方式為您詳解SQL SERVER分區視圖,希望對您學習SQL數據庫能有所幫助。

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


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


-- 首先我們要實現的是一個記錄日志的存儲過程,這個存儲過程不是簡單的把日志插入,還要按當前日期來判斷-- 表是否存在,然后動態的建立表,并按分區表的規則建立CHECK約束.在此例中,我們使用的是按周的日期來-- 規定表的名稱如下: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. -- 周的結束日期  

  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. -- 插入相應的日志數據  

  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.  
-- 創建分區視圖 

 

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

-- 查詢分區視圖


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

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


該文章在 2011/5/4 23:32:09 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved