" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL Server 索引和視圖詳解

 更新時(shí)間:2022年01月19日 11:15:06   作者:hoojo  
這篇文章主要為大家介紹了SQLServer索引和視圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

索引

1、 什么是索引

索引就是數(shù)據(jù)表中數(shù)據(jù)和相應(yīng)的存儲(chǔ)位置的列表,利用索引可以提高在表或視圖中的查找數(shù)據(jù)的速度。

2、 索引分類(lèi)

數(shù)據(jù)庫(kù)中索引主要分為兩類(lèi):聚集索引和非聚集索引。SQL Server 2005還提供了唯一索引、索引視圖、全文索引、xml索引等等。聚集索引和非聚集索引是數(shù)據(jù)庫(kù)引擎中索引的基本類(lèi)型,是理解其他類(lèi)型索引的基礎(chǔ)。

聚集索引

聚集索引是值表中數(shù)據(jù)行的物理存儲(chǔ)順序和索引的存儲(chǔ)順序完全相同。聚集索引根據(jù)索引順序物理地重新排列了用戶插入到表中的數(shù)據(jù),因此,每個(gè)表只能創(chuàng)建一個(gè)聚集索引。聚集索引經(jīng)常創(chuàng)建在表中經(jīng)常被搜索到的列或按順序訪問(wèn)的列上。在默認(rèn)情況下,主鍵約束自動(dòng)創(chuàng)建聚集索引。

非聚集索引

非聚集索引不改變表中數(shù)據(jù)列的物理存儲(chǔ)位置,數(shù)據(jù)與索引分開(kāi)存儲(chǔ),通過(guò)索引指向的地址與表中的數(shù)據(jù)發(fā)生關(guān)系。

非聚集索引沒(méi)有改變表中物理行的位置,索引可以在以下情況下使用非聚集索引:

一、如果某個(gè)字段的數(shù)據(jù)唯一性比較高

二、如果查詢所得到的數(shù)據(jù)量比較少

聚集索引和非聚集索引的區(qū)別:

聚集索引

非聚集索引

每個(gè)表只允許創(chuàng)建一個(gè)聚集索引

最多可以有249個(gè)非聚集索引

物理的重排表中的數(shù)據(jù)以符合索引約束

創(chuàng)建一個(gè)鍵值列表,鍵值指向數(shù)據(jù)在數(shù)據(jù)頁(yè)中的位置

用于經(jīng)常查找數(shù)據(jù)的列

用于從表中查找單個(gè)值的列

用于從表中查找單個(gè)值的列

其他類(lèi)型索引

除了以上索引,還有以下類(lèi)型索引:

a、 唯一索引:如果希望索引鍵都不同,可以創(chuàng)建唯一索引。聚集索引和非聚集索引都可以是唯一索引。

b、 包含新列索引:索引列的最大數(shù)量是16個(gè),索引列的字節(jié)總數(shù)的最高值是900。如果當(dāng)多個(gè)列的字節(jié)總數(shù)大于900,切又想在這些劣種都包含索引是,可以使用包含性列索引

c、 視圖索引:提供視圖查詢效率,可以視圖的索引物理化,也就是說(shuō)將結(jié)果集永久存儲(chǔ)在索引中,可以創(chuàng)建視圖索引。

d、 XML索引:是與xml數(shù)據(jù)關(guān)聯(lián)的索引形式,是XML二進(jìn)制blob的已拆分持久表示形式

e、 全文索引:一種特殊類(lèi)型的基于標(biāo)記的功能性功能,用于幫助在字符串中搜索賦值的詞

3、 創(chuàng)建索引

語(yǔ)法

create [unique] [clustered | noclustered]
index index_name
on table_name (column_name ...)
[with fillfactor=x]

unique唯一索引

clustered聚集索引

noclustered非聚集索引

fillfactor填充因子大小,范圍在0-100直接,表示索引頁(yè)填滿的空間所占的百分比。

示例

if (exists (select * from sys.indexes where name = 'idx_stu_name'))
    drop index student.idx_stu_name
go
create index idx_stu_name
on
student(name);
 
--聯(lián)合索引
if (exists (select * from sys.indexes where name = 'idx_uqe_clu_stu_name_age'))
    drop index student.idx_uqe_clu_stu_name_age
go
create unique clustered index idx_uqe_clu_stu_name_age
on student(name, age);
 
if (exists (select * from sys.indexes where name = 'idx_cid'))
    drop index student.idx_cid
go
 
if (exists (select * from sys.indexes where name = 'idx_cid'))
    drop index student.idx_cid
go
 
--非聚集索引
create nonclustered index idx_cid
on
student (cid)
with fillFactor = 30;    --填充因子
 
--聚集索引
if (exists (select * from sys.indexes where name = 'idx_sex'))
    drop index student.idx_sex
go
create clustered index idx_sex
on
student(sex);
 
--聚集索引
if (exists (select * from sys.indexes where name = 'idx_name'))
    drop index student.idx_name
go
create unique index idx_name
on
student(name);

4、 適合的創(chuàng)建索引的列

當(dāng)數(shù)據(jù)庫(kù)的某一列被頻繁的用于數(shù)據(jù)庫(kù)查詢時(shí),或者該列用于數(shù)據(jù)庫(kù)進(jìn)行排序時(shí)可以創(chuàng)建成索引

5、 不適合創(chuàng)建索引的列

如果列中有幾個(gè)不同的值,或者表中僅包含幾行值,則不推薦為其創(chuàng)建索引。因?yàn)樗饕谒阉鲾?shù)據(jù)所花的時(shí)間比在表中逐行搜索話的時(shí)間更長(zhǎng)。

視圖

1、 什么是視圖

視圖就是一個(gè)虛擬的數(shù)據(jù)表,該數(shù)據(jù)表中的數(shù)據(jù)記錄是有一條查詢語(yǔ)句的查詢結(jié)果得到的。

2、 創(chuàng)建視圖準(zhǔn)則

創(chuàng)建視圖需要考慮一下準(zhǔn)則:

  • 視圖名稱(chēng)必須遵循標(biāo)識(shí)符的規(guī)則,該名稱(chēng)不得與該架構(gòu)的如何表的名稱(chēng)相同
  • 你可以對(duì)其他視圖創(chuàng)建視圖。允許嵌套視圖,但嵌套不得超過(guò)32層。視圖最多可以有1024個(gè)字段
  • 不能將規(guī)則和default定義于視圖相關(guān)聯(lián)
  • 視圖的查詢不能包含compute子句、compute by子句或into關(guān)鍵字
  • 定義視圖的查詢不能包含order by子句,除非在select 語(yǔ)句的選擇列表中還有top子句

下列情況必須指定視圖中每列的名稱(chēng):

  • 視圖中的如何列都是從算術(shù)表達(dá)式、內(nèi)置函數(shù)或常量派生而來(lái)
  • 視圖中有兩列或多列具有相同名稱(chēng)(通常由于視圖定義包含聯(lián)接,因此來(lái)自兩個(gè)或多個(gè)不同的列具有相同的名稱(chēng))
  • 希望視圖中的列指定一個(gè)與其原列不同的名稱(chēng)(也可以在視圖中重命名列)。無(wú)論是否重命名,視圖列都回繼承原列的數(shù)據(jù)類(lèi)型

3、 創(chuàng)建視圖

--創(chuàng)建視圖
if (exists (select * from sys.objects where name = 'v_stu'))
    drop view v_stu
go
create view v_stu
as
select id, name, age, sex from student;

4、 修改視圖

alter view v_stu
as
select id, name, sex from student;
 
alter view v_stu(編號(hào), 名稱(chēng), 性別)
as
    select id, name, sex from student
go
select * from v_stu;
 
select * from information_schema.views;

5、 加密視圖

alter view v_stu
as
select id, name, sex from student;
 
alter view v_stu(編號(hào), 名稱(chēng), 性別)
as
    select id, name, sex from student
go
select * from v_stu;
 
select * from information_schema.views;

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 詳解SqlServer數(shù)據(jù)庫(kù)中Substring函數(shù)的用法

    詳解SqlServer數(shù)據(jù)庫(kù)中Substring函數(shù)的用法

    substring操作的字符串,開(kāi)始截取的位置,返回的字符個(gè)數(shù),本文通過(guò)簡(jiǎn)單實(shí)例給大家介紹了SqlServer數(shù)據(jù)庫(kù)中Substring函數(shù)的用法,感興趣的朋友一起看看吧
    2018-04-04
  • MSSQL 游標(biāo)使用 心得

    MSSQL 游標(biāo)使用 心得

    MS-SQL游標(biāo)的使用及理解 windows或DOS的“光標(biāo)”不同,MS-SQL的游標(biāo)是一種臨時(shí)的數(shù)據(jù)庫(kù)對(duì)象,既對(duì)可用來(lái)旋轉(zhuǎn)儲(chǔ)存在系統(tǒng)永久表中的數(shù)據(jù)行的副本,也可以指向儲(chǔ)存在系統(tǒng)永久表中的數(shù)據(jù)行的指針。
    2009-04-04
  • SQL Server中減小Log文件尺寸的方法分享

    SQL Server中減小Log文件尺寸的方法分享

    有時(shí),需要減小sql server中l(wèi)og文件的尺寸,對(duì)于MS SQL Server 2005以及MS SQL Server 2000來(lái)說(shuō),可以這樣操作
    2013-02-02
  • 修復(fù)斷電等損壞的SQL 數(shù)據(jù)庫(kù)

    修復(fù)斷電等損壞的SQL 數(shù)據(jù)庫(kù)

    修復(fù)斷電等損壞的SQL 數(shù)據(jù)庫(kù),不論因?yàn)槟姆N原因,大家都可以測(cè)試下,試試。
    2009-08-08
  • 淺析SQLServer中的Scanf與Printf

    淺析SQLServer中的Scanf與Printf

    本篇文章是對(duì)SQLServer中的Scanf與Printf進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • SQL Server 服務(wù)器優(yōu)化技巧淺談

    SQL Server 服務(wù)器優(yōu)化技巧淺談

    數(shù)據(jù)文件和日志文件的操作會(huì)產(chǎn)生大量的I/O。在可能的條件下,日志文件應(yīng)該存放在一個(gè)與數(shù)據(jù)和索引所在的數(shù)據(jù)文件不同的硬盤(pán)上以分散I/O,同時(shí)還有利于數(shù)據(jù)庫(kù)的災(zāi)難恢復(fù)。
    2010-03-03
  • sqlserver獲取當(dāng)前日期的最大時(shí)間值

    sqlserver獲取當(dāng)前日期的最大時(shí)間值

    如果你有看到這篇,會(huì)看到Insus.NET在SQL Server2008使用最簡(jiǎn)單的方法取到午夜時(shí)間值。
    2011-09-09
  • SQL2000安裝后,SQL Server組無(wú)項(xiàng)目解決方法

    SQL2000安裝后,SQL Server組無(wú)項(xiàng)目解決方法

    這篇文章主要介紹了SQL2000安裝后,SQL Server組無(wú)項(xiàng)目解決方法,需要的朋友可以參考下
    2016-09-09
  • SQL 特殊狀態(tài)“未知“以及“空值NULL“的判斷

    SQL 特殊狀態(tài)“未知“以及“空值NULL“的判斷

    Null值是SQL中的一個(gè)特殊值,表示缺少值或未知值,還有未知(UNKNOWN),表示無(wú)法判斷出真或者假,本文主要介紹了SQL 特殊狀態(tài)“未知“以及“空值NULL“的判斷,感興趣的可以了解一下
    2023-11-11
  • sql 版本詳解 讓你認(rèn)識(shí)跟sql2000的區(qū)別

    sql 版本詳解 讓你認(rèn)識(shí)跟sql2000的區(qū)別

    如果你是初學(xué)者,如果你只是想要在家里學(xué)習(xí)學(xué)習(xí),如果你的環(huán)境是 WindowsXP Pro,那么,你應(yīng)該選擇的 是 SQL2005 Development(開(kāi)發(fā)版),而不是 SQL2005 Enterprise (企業(yè)版)或 SQL2005 Express(簡(jiǎn)易版)。
    2010-05-05

最新評(píng)論