weidagang2046的專欄

          物格而后知致
          隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0

          導航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(12)

          隨筆檔案(8)

          文章分類(421)

          文章檔案(409)

          相冊

          Link

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          海量數據庫的查詢優化及分頁算法方案

          在以下的文章中,我將以“辦公自動化”系統為例,探討如何在有著1000萬條數據的MS SQL SERVER數據庫中實現快速的數據提取和數據分頁。以下代碼說明了我們實例中數據庫的“紅頭文件”一表的部分數據結構:

          CREATE TABLE [dbo].[TGongwen] (??? --TGongwen是紅頭文件表名

          ?? [Gid] [int] IDENTITY (1, 1) NOT NULL ,
          --本表的id號,也是主鍵

          ?? [title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,?
          --紅頭文件的標題

          ?? [fariqi] [datetime] NULL ,
          --發布日期

          ?? [neibuYonghu] [varchar] (70) COLLATE Chinese_PRC_CI_AS NULL ,
          --發布用戶

          ?? [reader] [varchar] (900) COLLATE Chinese_PRC_CI_AS NULL ,

          --需要瀏覽的用戶。每個用戶中間用分隔符“,”分開

          ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

          GO


            下面,我們來往數據庫中添加1000萬條數據:

          declare @i int

          set @i=1

          while @i<=250000

          begin

          ??? insert into Tgongwen(fariqi,neibuyonghu,reader,title) values('2004-2-5','通信科','通信科,辦公室,王局長,劉局長,張局長,admin,刑偵支隊,特勤支隊,交巡警支隊,經偵支隊,戶政科,治安支隊,外事科','這是最先的25萬條記錄')

          ??? set @i=@i+1

          end

          GO

          ?

          declare @i int

          set @i=1

          while @i<=250000

          begin

          ??? insert into Tgongwen(fariqi,neibuyonghu,reader,title) values('2004-9-16','辦公室','辦公室,通信科,王局長,劉局長,張局長,admin,刑偵支隊,特勤支隊,交巡警支隊,經偵支隊,戶政科,外事科','這是中間的25萬條記錄')

          ??? set @i=@i+1

          end

          GO

          ?

          declare @h int

          set @h=1

          while @h<=100

          begin

          declare @i int

          set @i=2002

          while @i<=2003

          begin

          declare @j int

          ??????? set @j=0

          ??????? while @j<50

          ??????????? begin

          declare @k int

          ??????????? set @k=0

          ??????????? while @k<50

          ??????????? begin

          ??? insert into Tgongwen(fariqi,neibuyonghu,reader,title) values(cast(@i as varchar(4))+'-8-15 3:'+cast(@j as varchar(2))+':'+cast(@j as varchar(2)),'通信科','辦公室,通信科,王局長,劉局長,張局長,admin,刑偵支隊,特勤支隊,交巡警支隊,經偵支隊,戶政科,外事科','這是最后的50萬條記錄')

          ??????????? set @k=@k+1

          ??????????? end

          set @j=@j+1

          ??????? end

          set @i=@i+1

          end

          set @h=@h+1

          end

          GO

          ?

          declare @i int

          set @i=1

          while @i<=9000000

          begin

          ??? insert into Tgongwen(fariqi,neibuyonghu,reader,title) values('2004-5-5','通信科','通信科,辦公室,王局長,劉局長,張局長,admin,刑偵支隊,特勤支隊,交巡警支隊,經偵支隊,戶政科,治安支隊,外事科','這是最后添加的900萬條記錄')

          ??? set @i=@i+1000000

          end

          GO

            通過以上語句,我們創建了25萬條由通信科于2004年2月5日發布的記錄,25萬條由辦公室于2004年9月6日發布的記錄,2002年和2003年各100個2500條相同日期、不同分秒的由通信科發布的記錄(共50萬條),還有由通信科于2004年5月5日發布的900萬條記錄,合計1000萬條。

          from: http://www.pconline.com.cn/pcedu/empolder/db/sql/0501/538958.html

          posted on 2006-10-27 12:17 weidagang2046 閱讀(272) 評論(0)  編輯  收藏 所屬分類: Database

          主站蜘蛛池模板: 黄龙县| 运城市| 盘山县| 武胜县| 刚察县| 四川省| 眉山市| 泰州市| 株洲市| 奇台县| 阿荣旗| 渝中区| 开原市| 灵寿县| 开鲁县| 邹平县| 察隅县| 雷山县| 旺苍县| 新平| 襄垣县| 兴隆县| 汪清县| 西丰县| 海原县| 卓尼县| 镇巴县| 武义县| 安泽县| 凤山县| 伊川县| 高邑县| 龙门县| 灵丘县| 安溪县| 米林县| 舒兰市| 东安县| 牟定县| 澳门| 剑阁县|