1. 程式人生 > >使用SQL Server檢視的優缺點

使用SQL Server檢視的優缺點

SQL Server檢視我們經常會用的到,下面就為您介紹使用SQL Server檢視的優缺點,希望可以對您SQL Server檢視有更多的瞭解。

在程式設計的時候必須先了解檢視的優缺點,這樣可以揚長避短,SQL Server檢視具有如下的一些優點:

● 簡單性。檢視不僅可以簡化使用者對資料的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為檢視,從而使使用者不必為以後的操作每次都指定全部的條件。

● 安全性。通過檢視使用者只能查詢和修改他們所能見到的資料。資料庫中的其他資料則既看不見也取不到。資料庫授權命令可以使每個使用者對資料庫的檢索限制到特定的資料庫物件上,但不能授權到資料庫特定行和特定的列上。通過檢視,使用者可以被限制在資料的不同子集上。

● 邏輯資料獨立性。檢視可以使應用程式和資料庫表在一定程度上獨立。如果沒有檢視,應用一定是建立在表上的。有了檢視之後,程式可以建立在檢視之上,從而程式與資料庫表被檢視分割開來。

SQL Server檢視也存在一些缺點,主要如下。

● 效能:SQL Server必須把檢視的查詢轉化成對基本表的查詢,如果這個檢視是由一個複雜的多表查詢所定義,那麼,即使是檢視的一個簡單查詢,SQL Server也把它變成一個複雜的結合體,需要花費一定的時間。

● 修改限制:當用戶試圖修改檢視的某些行時,SQL Server必須把它轉化為對基本表的某些行的修改。對於簡單檢視來說,這是很方便的,但是,對於比較複雜的檢視,可能是不可修改的。

所以,在定義資料庫物件時,不能不加選擇地來定義SQL Server檢視,應該權衡檢視的優點和缺點,合理地定義檢視。

SQL SERVER檢視不僅可以實現許多我們需要的功能,而且對於SQL SERVER查詢效率的提高也有幫助,下面一起來了解一下。

有兩張資料表:A和B,其中A的記錄為2萬條左右,而B中的資料為200萬條以上,現在要求以a.id=b.id為關聯進行資料篩選。

為此要求,我做了個SQL SERVER檢視View1,將a.id與b.id關聯起來,執行該檢視的查詢,使用了2秒中就得到結果了。

這時又有一特殊需求:編寫儲存過程,該儲存過程中有一個遊標的迴圈,該迴圈重複1萬次,在每次迴圈中都使用了對View1的查詢。

舉例如下:

循環遊標體(重複1萬次)

{ select @text=text from view1 [email protected]
--其中@text,@id均為變數update form1 set [email protected] where [email protected]}

執行以上的儲存過程,發現竟然要花費>7分鐘的運算時間,進行分析後得知效率全損耗在對view1檢視的掃描上,儘管單獨對該檢視進行查詢只需2秒,但在這種情況下即需要太多的時間。

因此改進該儲存過程如下:

create table #tempTab( id nvarchar(20), text nvarchar(20))

查詢View1檢視,將記錄插入到#tempTab臨時表中... 循環遊標體(重複1萬次)

{ select @text=text from #tempTab [email protected]
--其中@text,@id均為變數update form1 set [email protected] where [email protected]}

別小瞧以上的改動,此時該儲存過程只花費50秒的時間。 對於上述現象,分析如下:在多次迴圈對某個檢視進行查詢時,將會耗費大量的時間,因此將該檢視的資料放在記憶體中進行計算會在很大程度上提高速度。

相關推薦

使用SQL Server檢視優缺點

SQL Server檢視我們經常會用的到,下面就為您介紹使用SQL Server檢視的優缺點,希望可以對您SQL Server檢視有更多的瞭解。在程式設計的時候必須先了解檢視的優缺點,這樣可以揚長避短,SQL Server檢視具有如下的一些優點:● 簡單性。檢視不僅可以簡化使

SQL Server——檢視(建立檢視、修改檢視、通過檢視改資料)

目錄   一、建立檢視 方法一:圖形化方式進行建立(如圖) 方法二:SQL查詢語句的方式建立檢視(如圖) 二、修改和刪除檢視 方法一:圖形化方式——直接在介面上進行拖動操作,刪除更加簡單,單擊滑鼠右鍵直接刪除就好。(如圖) 方法二:SQL語句方式 三、通

通過 SQL Server 檢視訪問另一個數據庫伺服器表的方法

-訪問不同電腦上的資料庫(遠端只要聯好網就一樣)   --如果經常訪問或資料量大,建議用連結伺服器   --建立連結伺服器   exec   sp_addlinkedserver     'srv_lnk','','SQLOLEDB','遠端伺服器名或ip地址'   exec

SQL Server檢視事務鎖

SELECT Blocked.Session_ID AS Blocked_Session_ID , Blocked_SQL.text AS Blocked_SQL , waits.wait_type AS Blocked_Resource

SQL server檢視的介紹,建立與使用

檢視檢視是一種虛擬表,來自一個或者多個表的行或者列,檢視並不是資料庫中儲存的資料值,可以簡單的理解檢視就是封裝了一段查詢語句,呼叫該檢視就得到查詢語句查詢出來的臨時表.---------------------------------------建立檢視的兩種方式開啟需要建

SQL Server檢視及匯出建表語句

檢視建表語句 在“物件資源管理器”中找到要匯出的表,選中該表並單擊右鍵,“編寫表指令碼為(S)”/“CREATE到(C)”/“新查詢編輯器視窗”即可檢視該表的建表語句。 匯出建表語句 在“物件資源管理器”中找到要匯出的表,選中該表並單擊右鍵,“編寫表指令碼為(S)”/“C

SQL Server 檢視快取中使用索引掃描、表掃描、鍵查詢、隱式轉換的SQL語句

表掃描和標檢查詢是最消耗效能的,還好就是SqlServer自動維護執行計劃將其儲存在記憶體中.而且動態檢視sys.dm_db_index_usage_stats也記錄相關資訊,這樣我們就可以再次分析執行計劃,從而找出進行優化 --總體檢視哪個資料庫掃描查詢次數最多 sel

SQL SERVER 檢視資料庫裡阻塞和死鎖情況

  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[sp_who_lock]')   and   OBJECTPROPERTY(id,   N'I

(小技巧)Sql server檢視sql語句的執行時間

在寫資料庫sql的時候,我們往往很關心該sql語句的執行效率,如下小技巧可以幫助程式設計師簡單快速的得到某條或某幾條sql的執行時間. declare @d datetime set @d=getda

SQL Server檢視所有表大小,所佔空間

create table #Data(name varchar(100),row varchar(100),reserved varchar(100),data varchar(100),index_size varchar(100),unused varchar(100)

sql server- 檢視程序池預設最大連線數和資料當前連線數

1、獲取SQL Server允許同時使用者連線的最大數      SELECT @@MAX_CONNECTIONS         2、獲取當前指定資料庫的連線資訊      SELECT * FROM master.dbo.sysprocesses WHERE dbid

sql server 檢視sql效能消耗

1. 查詢sql所消耗io效能set statistics io on select * from t_his_card_log where fyid = '0301014'set statistics io off 2.檢視SQL語句時間消耗set statistics t

SQL SERVER檢視總結

 前言:什麼是檢視?   檢視是從一個或幾個基本表(或檢視)匯出的表,它與基本表不同,是一個虛表。它是使用者檢視資料庫表中資料的一種方式,是基於整個查詢結果的虛擬表,使用者通過它來瀏覽感興趣的部分或全部資料。而資料的物理儲存仍然在表中,這些表稱為檢視的基表。資料庫中只存

SQL Server建立檢視——檢視的作用

檢視簡介: 檢視可以看作定義在SQL Server上的虛擬表。檢視正如其名字的含義一樣,是另一種檢視資料的入口。 常規檢視本身並不儲存實際的資料,而僅僅是由SELECT語句組成的查詢定義的虛擬表 。 從資料庫系統內部來看,檢視是由一張或多張表中的資料組成的,從資料庫系統外部來看,檢視就如同一張

sql server記憶體使用情況 檢視Sql Server 資料庫的記憶體使用情況

檢視Sql Server 資料庫的記憶體使用情況 轉自:https://www.cnblogs.com/wanghao4023030/p/8299478.html  -- 查詢SqlServer總體的記憶體使用情況 se

SQL Server資料庫開發(4.索引和檢視

一、索引 定義:是資料表中資料和相應儲存位置的列表。 作用:可以提高在表或檢視中查詢資料的速度。 1.分類:聚集索引,非聚集索引 聚集索引:指表中資料行的物理儲存順序與索引順序完全相同。 非聚集索引:不該表表中資料行的物理儲存位置,資料與索引分開儲存,通過索引指向的地址與表中的資

SQL Server 2008R2各個版本,如何檢視是否啟用,剩餘可用日期?

SELECT create_date AS 'SQL Server Installed Date', Expiry_date AS 'SQL Server Expiry Date', DATEDIFF(dd,create_date, GETDATE()) 'No_of_Days_Used'

SQL Server觸發器建立、刪除、修改、檢視

教程貼士:本教程為大家介紹SQL Server觸發器建立、刪除、修改、檢視方法。     一:觸發器是一種特殊的儲存過程,它不能被顯式地呼叫,而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地啟用。所以觸發器可以用來實現對錶實施複雜的完整性約束。   二:SQL Server

SQL Server 中系統檢視sysobjects中type欄位的說明

物件型別:   AF = 聚合函式 (CLR)   C = CHECK 約束   D = DEFAULT(約束或獨立)   F = FOREIGN KEY 約束   FN = SQL 標量函式  

sql server 刪除所有 檢視、儲存過程

--刪除檢視: declare mycur cursor local for select [name] from dbo.sysobjects where xtype='V' --宣告遊標 declare @name varchar(100) OPEN mycur --開啟