在sql server中怎么理解索引、視圖
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
1.索引
索引是一個單獨的,物理的數(shù)據(jù)庫結(jié)構(gòu),它是某個表中一列或若干列值的集合和相應(yīng)的指向表中物理標(biāo)志這些值的數(shù)據(jù)頁的邏輯指針清單.索引是依賴于表建立的,它提供了數(shù)據(jù)庫中編排表中數(shù)據(jù)的內(nèi)部方法.一個表的存儲是由兩部分組成的,一部分是用來存放表 的數(shù)據(jù)頁面,另一部分存放索引頁面.索引就存放在索引頁面上. 從某種程度上,可以把數(shù)據(jù)庫看作一本書,把索引看作書的目錄,通過目錄查找書中的信息,顯然較沒有目錄的書方便,快捷. 按照上面的解釋看書的目錄這個比喻: >>它實際存,占據(jù)了書的內(nèi)容,紙張 >>它指向?qū)嶋H存在的內(nèi)容。比如要找第一章,那么目錄后面的頁碼便為 我們提供了一個快捷的方法。當(dāng)然對數(shù)據(jù)庫來說,這些都是透明的我 們不能看到的。但的確提高了數(shù)據(jù)庫返回給我們查詢結(jié)果的效率。 另外,我們要將它與查詢常用到的order by區(qū)分開。前幾天公司里新員工培訓(xùn)曾遇到有的同學(xué)j混淆了。 所謂order by只不過是將返回的結(jié)果按要求排好順序,方便我們的使用。它對所在的查詢語句返回給我們結(jié)果是效率或其它方面(除去我們對結(jié)果的應(yīng)用)是沒有任何用處的。 另外有一種唯一索引,也就是主鍵(簡單理解就是一個表中,如果在某列上建立了唯一索引,則該列不可以有兩個一樣的記錄出現(xiàn)). 但唯一索引有時會使我們插入/修改數(shù)據(jù)效率降低---或說就是降低了。只是數(shù)據(jù)量小時不明顯。因為每次插入/修改都會檢查完所有記錄,看是否有該值存在。 >>>>就像要求每個身份證號只能一人使用,那么分配一個身份證號時就要檢查一下是否已經(jīng)有人在用這個身份證號(當(dāng)然我們現(xiàn)實中可能已經(jīng)排好了,我們用到哪個,下一個會用哪個) 2.視圖 首先看一下一些標(biāo)準(zhǔn)的說法 視圖是原始數(shù)據(jù)庫數(shù)據(jù)的一種變換,是查看表中數(shù)據(jù)的另外一種方式。可以將視圖看成是一個移動的窗口,通過它可以看到感興趣的數(shù)據(jù)。 視圖是從一個或多個實際表中獲得的,這些表的數(shù)據(jù)存放在數(shù)據(jù)庫中。那些用于產(chǎn)生視圖的表叫做該視圖的基表。一個視圖也可以從另一個視圖中產(chǎn)生。 視圖的定義存在數(shù)據(jù)庫中,與此定義相關(guān)的數(shù)據(jù)并沒有再存一份于數(shù)據(jù)庫中。通過視圖看到的數(shù)據(jù)存放在基表中。 視圖看上去非常象數(shù)據(jù)庫的物理表,對它的操作同任何其它的表一樣。當(dāng)通過視圖修改數(shù)據(jù)時,實際上是在改變基表中的數(shù)據(jù);相反地,基表數(shù)據(jù)的改變也會自動反映在由基表產(chǎn)生的視圖中。由于邏輯上的原因,有些視圖可以修改對應(yīng)的基表,有些則不能(僅僅能查 >>>如果說索引是為了效率,那么視圖是為了我們使用的方便。 >>>視圖實際存在,能像對表的應(yīng)用一樣操作(但有限制) >>>所謂視圖存在并不它的數(shù)據(jù)存在于視圖中,而中是定義存在。它的數(shù)據(jù)仍存放在原來數(shù)據(jù)表中。就像你的檔案有你的完整描述(假設(shè)這就是定義)雖然它能代表你,能在你上面反應(yīng)一些k事(如給你記過的處分)但你本身并不在這。你實際也許現(xiàn)在正在國外呢. >>> >>>如果把視圖比喻一下,就像你從指縫中只看你想看的人或東西。 比如你只想看你前面三個人的手里是不是有錢包,你從指縫里看到它們的手就是一個視圖。而對其它數(shù)據(jù)不關(guān)心。 >>>現(xiàn)用庫表來說一下。學(xué)生表有許多描述學(xué)生的信息。成績表有許多課目的成績。你只想列出名字,學(xué)號,課目,成績。那么你至少有兩種三種方法: 》》》1.再建一個表存這些數(shù)據(jù)。顯然這會占空間,而且你在更新那兩個表時也要更新這個表,很容易忘記。 》》》2.用查詢語句查出結(jié)果。但要每次操作(當(dāng)然可以寫存儲過程--但不能對結(jié)果再操作;;;也可以寫臨時表---但對它的操作也不方便) 》》》3.建視圖。把需要的數(shù)據(jù)的定義放到視圖中,以后查詢可以直接用這個視圖名,如同用表名一樣。 注意:前面講到并不是所有對視圖的操作都會完成對原表的操作。一個簡單的例子,,視圖某一列(金額)由(單價*數(shù)量)獲得,更新視圖的金額這一列,如100改成200,則多出100,但數(shù)據(jù)庫并不知道如何把這100分給單價還是數(shù)量。 該文章在 2012/1/14 17:33:35 編輯過
|
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |