第九章
使用Views和Indexes影響查詢率能
View
•是資料庫的物件,包含select結構
•是將先寫好的select架構存成表格
–簡化複雜的查詢結構
–簡化的數據庫用戶的認知
–限制存取數據
•create view view_name [(column1 [, column2…]) as select_statement [with check option]
•union可以用於create view合併來自多個查詢結果集
•create view view_name as select column_list from table_name union [all] select column_list from table_name
•允許其他人使用View,你必須賦予他們權限
•grant [ select | insert | update | delete | all ] on view_name to user_list
•通過View查詢數據,使用View的名稱,就好像它是一個表名
•select * from view_name
•如果要對View做insert、update和delete必需要在同一個table下才可以使用
•可以減化查詢
•限制資料的查詢
•檢查選項是否符合View的權限
•對insert和update的規範,以免新增或修改的資料,在View裡是無法被查閱的
•規則
•可以使用
–where
–group by
–distinct
–join
–view
–union
•不可以使用
–order by
–compute by
–select into
•sp_depends {table_name, view_name}
–查詢view與table的關系
•sp_help
–查詢相關資訊
•sp_helptext view_name
–查詢建立view的語法
•sp_rename old_view_name, new_view_name
–更改名稱
Indexes
•Table Scan
•table scan 是掃描讀取表中的每一行
•沒有它創建的任何索引的表,可以搜索只能通過table scan
•Indexes是數據庫物件,幫助服務器更迅速地找到數據
•建立
•create [unique] [clustered | nonclustered] index index_name on table_name (column1 [, column2])
•unique:值是否可以重覆
•clustered:資料會根據index排序
•nonclustered:
•index 和 data 是分開的
•實體資料不以index 來排序
•刪除
•drop index table_name, index_name
•Query Optimizer是一個Adaptive Server組件,決定執行查詢的最有效方式
–它搜索存取方法,需要的時間最少
•Query Optimizer 的選擇
–是否應使用index或table scan
–該index使用,如果有多個索引
•Query Optimizer 可以使用一個索引,只有當一個查詢引用索引列在where子句
•sp_helpindex table_name
–顯示有關指定資料表的Index信息
•sp_help table_name
–顯示有關指定資料表的信息
•sp_rename ‘table.old_index_name”, new_index_name
–更改index名稱