視圖在數據庫開發過程中是非常重要的,對提高查詢速度有很大的提高。因此我們的學會創建視圖,並且有效的使用視圖。
(1)表准的SQL視圖
標准視圖比較簡單,大家也都在使用,在此就不壘述了。
(2)使用動態視圖
標准視圖有一個嚴重的局限性,那就是標准視圖不支持參數。俗話說“法網恢恢,疏而不漏”,呵呵,我們也可以變通的使用帶參數的視圖。實現方法是我們把一個用戶定義的表值函數當作支持參數的動態視圖使用:
CREATE FUNCTION fnTestVIEw (@m_id int)
RETURNS TABLE
AS
RETURN (select * from 視圖名稱 where 條件=@m_id)
這樣可以在Select語句的From子句中引用他們,用法:
Select * from fnTestVIEw(2)
(3)使用索引視圖
我們在使用視圖的時候有時想怎麼能給視圖加索引呢,其實,視圖和普通的表一樣可以添加索引,當SQL Server必須聯合很多表時,這項技術可以大大提高Select語句的性能。
當在視圖上創建一個唯一聚集索引(unique clusterd index)時,SQL Server將物化這個視圖。看下面的例子:
CREATE VIEW dbo.vtUsers
WITH SCHEMABINDING
AS
SELECT dbo.tUsers.userid, dbo.tUsers.username, dbo.tUsers.passWord,
dbo.tUsers.question, dbo.tUsers.answer, dbo.tUsers.email, dbo.tUsers.realname,
dbo.tUsers.sex, dbo.tUsers.birthday, dbo.tUsers.country, dbo.tUsers.city,
dbo.tUsers.address, dbo.tUsers.zip, dbo.tUsers.tele, dbo.tUsers.exdate,
dbo.tUsers.totalfund, dbo.tUsers.ordertotal, dbo.tUsers.jifen, dbo.tUsers.pid,
dbo.tUsers.agentid, dbo.tUsers.agentid2, dbo.tUsers.agentid3, dbo.tUsers.status,
dbo.tUsers.checkmod, dbo.tUsers.account, dbo.tUsers.bank, dbo.tUsers.logip,