<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      SQL Server 分區(qū)表

      分區(qū)表就是在物理上將一個(gè)大表分成若干個(gè)小表,但是在邏輯上還是一個(gè)表

      如果你的數(shù)據(jù)庫中某一個(gè)表中的數(shù)據(jù)滿足以下幾個(gè)條件,那么你就要考慮創(chuàng)建分區(qū)表了。

          1、數(shù)據(jù)庫中某個(gè)表中的數(shù)據(jù)很多。很多是什么概念?一萬條?兩萬條?還是十萬條、一百萬條?這個(gè),我覺得是仁者見仁、智者見智的問題。當(dāng)然數(shù)據(jù)表中的數(shù)據(jù)多到查詢時(shí)明顯感覺到數(shù)據(jù)很慢了,那么,你就可以考慮使用分區(qū)表了。如果非要我說一個(gè)數(shù)值的話,我認(rèn)為是100萬條。

          2、但是,數(shù)據(jù)多了并不是創(chuàng)建分區(qū)表的惟一條件,哪怕你有一千萬條記錄,但是這一千萬條記錄都是常用的記錄,那么最好也不要使用分區(qū)表,說不定會(huì)得不償失。只有你的數(shù)據(jù)是分段的數(shù)據(jù),那么才要考慮到是否需要使用分區(qū)表。

          3、什么叫數(shù)據(jù)是分段的?這個(gè)說法雖然很不專業(yè),但很好理解。比如說,你的數(shù)據(jù)是以年為分隔的,對(duì)于今年的數(shù)據(jù)而言,你常進(jìn)行的操作是添加、修改、刪除和查詢,而對(duì)于往年的數(shù)據(jù)而言,你幾乎不需要操作,或者你的操作往往只限于查詢,那么恭喜你,你可以使用分區(qū)表。換名話說,你對(duì)數(shù)據(jù)的操作往往只涉及到一部分?jǐn)?shù)據(jù)而不是所有數(shù)據(jù)的話,那么你就可以考慮什么分區(qū)表了。

          那么,什么是分區(qū)表呢?

          簡單一點(diǎn)說,分區(qū)表就是將一個(gè)大表分成若干個(gè)小表。假設(shè),你有一個(gè)銷售記錄表,記錄著每個(gè)每個(gè)商場的銷售情況,那么你就可以把這個(gè)銷售記錄表按時(shí)間分成幾個(gè)小表,例如說5個(gè)小表吧。2009年以前的記錄使用一個(gè)表,2010年的記錄使用一個(gè)表,2011年的記錄使用一個(gè)表,2012年的記錄使用一個(gè)表,2012年以后的記錄使用一個(gè)表。那么,你想查詢哪個(gè)年份的記錄,就可以去相對(duì)應(yīng)的表里查詢,由于每個(gè)表中的記錄數(shù)少了,查詢起來時(shí)間自然也會(huì)減少。

          但將一個(gè)大表分成幾個(gè)小表的處理方式,會(huì)給程序員增加編程上的難度。以添加記錄為例,以上5個(gè)表是獨(dú)立的5個(gè)表,在不同時(shí)間添加記錄的時(shí)候,程序員要使用不同的SQL語句,例如在2011年添加記錄時(shí),程序員要將記錄添加到2011年那個(gè)表里;在2012年添加記錄時(shí),程序員要將記錄添加到2012年的那個(gè)表里。這樣,程序員的工作量會(huì)增加,出錯(cuò)的可能性也會(huì)增加。

          使用分區(qū)表就可以很好的解決以上問題。分區(qū)表可以從物理上將一個(gè)大表分成幾個(gè)小表,但是從邏輯上來看,還是一個(gè)大表。

          接著上面的例子,分區(qū)表可以將一個(gè)銷售記錄表分成五個(gè)物理上的小表,但是對(duì)于程序員而言,他所面對(duì)的依然是一個(gè)大表,無論是2010年添加記錄還是2012年添加記錄,對(duì)于程序員而言是不需要考慮的,他只要將記錄插入到銷售記錄表——這個(gè)邏輯中的大表里就行了。SQL Server會(huì)自動(dòng)地將它放在它應(yīng)該呆在的那個(gè)物理上的小表里。

          同樣,對(duì)于查詢而言,程序員也只需要設(shè)置好查詢條件,OK,SQL Server會(huì)自動(dòng)將去相應(yīng)的表里查詢,不用管太多事了。

          這一切是不是很誘人?

          的確,那么我們就可以開始動(dòng)手創(chuàng)建分區(qū)表了。

          第一、創(chuàng)建分區(qū)表的第一步,先創(chuàng)建數(shù)據(jù)庫文件組,但這一步可以省略,因?yàn)槟憧梢灾苯邮褂肞RIMARY文件。但我個(gè)人認(rèn)為,為了方便管理,還是可以先創(chuàng)建幾個(gè)文件組,這樣可以將不同的小表放在不同的文件組里,既便于理解又可以提高運(yùn)行速度。創(chuàng)建文件組的方法很簡單,打開SQL Server Management Studio,找到分區(qū)表所在數(shù)據(jù)庫,右鍵單擊,在彈出的菜單里選擇“屬性”。然后選擇“文件組”選項(xiàng),再單擊下面的“添加”按鈕,如下圖所示:

       

       

          第二,創(chuàng)建了文件組之后,還要再創(chuàng)建幾個(gè)數(shù)據(jù)庫文件。為什么要?jiǎng)?chuàng)建數(shù)據(jù)庫文件,這很好理解,因?yàn)榉謪^(qū)的小表必須要放在硬盤上,而放在硬盤上的什么地方呢?當(dāng)然是文件里啦。再說了,文件組中沒有文件,文件組還要來有啥用呢?還是在上圖的那個(gè)界面,選擇“文件”選項(xiàng),然后添加幾個(gè)文件。在添加文件的時(shí)候要注意以下幾點(diǎn):

          1、不要忘記將不同的文件放在文件組中。當(dāng)然一個(gè)文件組中也可以包含多個(gè)不同的文件。

          2、如果可以的話,將不同的文件放在不同的硬盤分區(qū)里,最好是放在不同的獨(dú)立硬盤里。要知道IQ的速度往往是影響SQL Server運(yùn)行速度的重要條件之一。將不同的文件放在不同的硬盤上,可以加快SQL Server的運(yùn)行速度。

          在本例中,為了方便起見,將所有數(shù)據(jù)庫文件都放在了同一個(gè)硬盤下,并且每個(gè)文件組中只有一個(gè)文件。如下圖所示。

       

          第三、創(chuàng)建一個(gè)分區(qū)函數(shù)。這一步是必須的了,創(chuàng)建分區(qū)函數(shù)的目的是告訴SQL Server以什么方式對(duì)分區(qū)表進(jìn)行分區(qū)。這一步必須要什么SQL腳本來完成。以上面的例子,我們要將銷售表按時(shí)間分成5個(gè)小表。假設(shè)劃分的時(shí)間為:

          第1個(gè)小表:2010-1-1以前的數(shù)據(jù)(不包含2010-1-1)。

          第2個(gè)小表:2010-1-1(包含2010-1-1)到2010-12-31之間的數(shù)據(jù)。

          第3個(gè)小表:2011-1-1(包含2011-1-1)到2011-12-31之間的數(shù)據(jù)。

          第4個(gè)小表:2012-1-1(包含2012-1-1)到2012-12-31之間的數(shù)據(jù)。

          第5個(gè)小表:2013-1-1(包含2013-1-1)之后的數(shù)據(jù)。

          那么分區(qū)函數(shù)的代碼如下所示:

      view plaincopy to clipboardprint?
      CREATE PARTITION FUNCTION partfunSale (datetime)  
      AS RANGE RIGHT FOR VALUES ('20100101','20110101','20120101','20130101') 
      CREATE PARTITION FUNCTION partfunSale (datetime)
      AS RANGE RIGHT FOR VALUES ('20100101','20110101','20120101','20130101')

          其中:

          1、CREATE PARTITION FUNCTION意思是創(chuàng)建一個(gè)分區(qū)函數(shù)。

          2、partfunSale為分區(qū)函數(shù)名稱。

          3、AS RANGE RIGHT為設(shè)置分區(qū)范圍的方式為Right,也就是右置方式。

          4、FOR VALUES ('20100101','20110101','20120101','20130101')為按這幾個(gè)值來分區(qū)。

          這里需要說明的一下,在Values中,'20100101'、'20110101'、'20120101'、'20130101',這些都是分區(qū)的條件。“ 20100101”代表2010年1月1日,在小于這個(gè)值的記錄,都會(huì)分成一個(gè)小表中,如表1;而小于或等于'20100101'并且小于'20110101'的值,會(huì)放在另一個(gè)表中,如表2。以此類推,到最后,所有大小或等于'20130101'的值會(huì)放在另一個(gè)表中,如表5。

          也許有人會(huì)問,為什么值“ 20100101”會(huì)放在表2中,而不是表1中呢?這是由AS RANGE RIGHT中的RIGHT所決定的,RIGHT的意思是將等于這個(gè)值的數(shù)據(jù)放在右邊的那個(gè)表里,也就是表2中。如果您的SQL語句中使用的是Left而不是RIGHT,那么就會(huì)放在左邊的表中,也就是表1中。

          第四、創(chuàng)建一個(gè)分區(qū)方案。分區(qū)方案的作用是將分區(qū)函數(shù)生成的分區(qū)映射到文件組中去。分區(qū)函數(shù)的作用是告訴SQL Server,如何將數(shù)據(jù)進(jìn)行分區(qū),而分區(qū)方案的作用則是告訴SQL Server將已分區(qū)的數(shù)據(jù)放在哪個(gè)文件組中。分區(qū)方案的代碼如下所示:

      view plaincopy to clipboardprint?
      CREATE PARTITION SCHEME partschSale  
      AS PARTITION partfunSale  
      TO (  
          Sale2009,  
          Sale2010,  
          Sale2011,  
          Sale2012,  
          Sale2013) 
      CREATE PARTITION SCHEME partschSale
      AS PARTITION partfunSale
      TO (
       Sale2009,
       Sale2010,
       Sale2011,
       Sale2012,
       Sale2013)

          其中:

          1、CREATE PARTITION SCHEME意思是創(chuàng)建一個(gè)分區(qū)方案。

          2、partschSale為分區(qū)方案名稱。

          3、AS PARTITION partfunSale說明該分區(qū)方案所使用的數(shù)據(jù)劃分條件(也就是所使用的分區(qū)函數(shù))為partfunSale。

          4、TO后面的內(nèi)容是指partfunSale分區(qū)函數(shù)劃分出來的數(shù)據(jù)對(duì)應(yīng)存放的文件組。

          到此為止,分區(qū)函數(shù)和分區(qū)方案就創(chuàng)建完畢了。創(chuàng)建后的分區(qū)函數(shù)和分區(qū)方案在數(shù)據(jù)庫的“存儲(chǔ)”中可以看到,如下圖所示:

       

          最后,創(chuàng)建分區(qū)表,創(chuàng)建方式和創(chuàng)建普遍表類似,如下所示:

      view plaincopy to clipboardprint?
      CREATE TABLE Sale(  
          [Id] [int] IDENTITY(1,1) NOT NULL,  
          [Name] [varchar](16) NOT NULL,  
          [SaleTime][datetime] NOT NULL  
      ) ON partschSale([SaleTime]) 
      CREATE TABLE Sale(
       [Id] [int] IDENTITY(1,1) NOT NULL,
       [Name] [varchar](16) NOT NULL,
       [SaleTime][datetime] NOT NULL
      ) ON partschSale([SaleTime])

          其中:

          1、CREATE TABLE 意思是創(chuàng)建一個(gè)數(shù)據(jù)表。

          2、Sale為數(shù)據(jù)表名。

          3、()中為表中的字段,這里的內(nèi)容和創(chuàng)建普通數(shù)據(jù)表沒有什么區(qū)別,惟一需要注意的是不能再創(chuàng)建聚集索引了。道理很簡單,聚集索引可以將記錄在物理上順序存儲(chǔ)的,而分區(qū)表是將數(shù)據(jù)分別存儲(chǔ)在不同的表中,這兩個(gè)概念是沖突的,所以,在創(chuàng)建分區(qū)表的時(shí)候就不能再創(chuàng)建聚集索引了。

          4、ON partschSale()說明使用名為partschSale的分區(qū)方案。

          5、partschSale()括號(hào)中為用于分區(qū)條件的字段是SaleTime。

          OK,一個(gè)物理上是分離的,邏輯上是一體的分區(qū)表就創(chuàng)建完畢了。查看該表的屬性,可以看到該表已經(jīng)屬于分區(qū)表了。

      轉(zhuǎn)自:http://www.voidcn.com/article/p-exswcdlb-xz.html

      posted @ 2020-06-09 22:10  Best丶zhaotf  閱讀(366)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲熟妇少妇任你躁在线观看无码| 久久这里都是精品二| 国产美女被遭强高潮免费一视频| 国产午夜福利av在线麻豆| 国产免费久久精品44| 和黑人中出一区二区三区| 午夜国产精品福利一二| 欧美人与性动交ccoo| 国产精品亚洲欧美大片在线看 | 老色鬼在线精品视频在线观看| 2019久久久高清日本道| 又污又爽又黄的网站| 精品免费看国产一区二区| 亚洲男人综合久久综合天堂| 亚洲精品成人区在线观看| 欧美大bbbb流白水| 昭觉县| 国产精品99久久免费| 欧美丰满妇大ass| 亚洲av久久精品狠狠爱av| 国产69精品久久久久777| 重口SM一区二区三区视频| 办公室强奷漂亮少妇同事| 精品视频福利| 亚洲国产高清aⅴ视频| 人人妻人人澡人人爽人人精品av| 成av人电影在线观看| 中文字幕日韩有码av| 精品少妇爆乳无码aⅴ区| 国产精品美女久久久久久麻豆| 欧美刺激性大交| 婷婷丁香五月亚洲中文字幕| 精品视频在线观看免费观看| 久久中文骚妇内射| 亚洲色大成网站WWW久久| 成人精品自拍视频免费看| 91精品国产色综合久久| 婷婷综合亚洲| 国产综合色在线精品| 亚洲欧美综合中文| 无码人妻精品丰满熟妇区|