sql2008索引视图
‘壹’ 如何创建sqlServer视图的索引
创建SqlServer视图的索引能够显着提高数据检索效率,使得现有查询更加高效。视图上的第一个索引必须是唯一聚集索引,之后可以添加其他非聚集索引。视图索引的命名规则与表索引一致,但视图名替代了表名。创建视图时需使用WITH SCHEMABINDING选项,否则会因未绑定到架构而报错。视图转换为索引视图时,需遵守多个规则,包括仅使用表、表属于同一个所有者、链接的表在同一数据库中、不包含特定子句和函数、所有字段必须显示指定等。
创建索引视图时,必须确保所有基本表和视图使用SET ANSI_NULLS ON创建。在创建索引或执行IUD操作时,必须设置ANSI_NULLS、ANSI_PADDING、ANSI_WARNINGS、ARITHABORT、CONCAT_NULL_YIELDS_NULL、QUOTED_IDENTIFIER、NUMERIC_ROUNDABORT等选项。这些设置的具体信息可以在SQL Server联机帮助中查阅。
索引视图的创建要求SQL Server版本达到2000企业版或开发版及以上。遵循这些规则和设置,可以有效提高视图的查询效率,特别是在大数据处理场景中。
索引视图的创建需要精确的SQL语句和正确的数据库环境配置。例如,创建视图时使用以下语句:
Create VIEW vXXX WITH SCHEMABINDING AS…… Create UNIQUE CLUSTERED INDEX idxXXX ON vXXX(cXXX)
这将确保视图可以高效地被查询。
值得注意的是,视图转换为索引视图的过程会将视图转化为一个可以高效检索数据的结构,但同时也带来了对视图复杂性的要求。因此,创建索引视图时需仔细考虑视图的结构和使用场景。
在创建索引视图的过程中,必须严格遵守上述规则,以确保视图能够正确地转换为索引视图,并且能够在需要时高效地执行查询。
‘贰’ 在 SQL 中,建立索引用( )。
【答案】:D
创建索引用 CREATE INDEX;创建模式用 CREATE SCHEMA;创建视图用 CREATE VIEW;创建表用 CREATE TABLE。
‘叁’ 1,sqlserver2008的常用工具包括哪些分别作用是什么
(1)SQL server配置管理工具:可以启动、暂停、恢复或者暂停服务。还可查看或更改服务属性等
(2)SQL server management studio:配置数据库系统、建立或删除数据库对象、设置或取消用户的访问权限,维护服务器与数据的安全、浏览错误日志等。
(3)SQL server profiler:监视服务器。系统管理员通过SQL server profiler监视SQL server 2008的事件,捕获每个事件的数据并将其保存到文件或SQL server 表以供分析等
(4)数据库引擎优化顾问:选择和创建最佳的索引、索引视图、分区等
(5)大量的命令行实用工具
‘肆’ 姹傝В锛屽叧浜岙QL缁栾〃鍒涘缓绱㈠紩鍜岃嗗浘镄勯梾棰桡纴钖勪綅甯甯蹇
绱㈠紩镄勪娇鐢ㄦ槸鏁版嵁搴撹嚜锷ㄥ畬鎴愮殑锛屼笉闇瑕佺壒鍒璋幂敤锛佷娇鐢ㄧ储寮曞彲浠ュ姞蹇镆ヨ㈤熷害锛屽彲浠ュ弬钥冧互涓嬬殑锏惧害锏剧戣存槑锛
浣跨敤绱㈠紩鍙蹇阃熻块梾琛ㄤ腑镄勭壒瀹氢俊鎭銆傜储寮曟槸瀵规暟鎹搴撹〃涓涓鍒楁垨澶氩垪镄勫艰繘琛屾帓搴忕殑涓绉岖粨鏋勶纴渚嫔 employee 琛ㄧ殑濮掳纸name锛夊垪銆傚傛灉瑕佹寜濮撴煡镓剧壒瀹氲亴锻桡纴涓庡繀椤绘悳绱㈣〃涓镄勬墍链夎岀浉姣旓纴绱㈠紩浼氩府锷╂偍镟村揩鍦拌幏寰楄ヤ俊鎭銆
銆銆鍦ㄥ叧绯绘暟鎹搴扑腑锛岀储寮曟槸涓绉崭笌琛ㄦ湁鍏崇殑鏁版嵁搴撶粨鏋勶纴瀹冨彲浠ヤ娇瀵瑰簲浜庤〃镄凷QL璇鍙ユ墽琛屽缑镟村揩銆傜储寮旷殑浣灭敤鐩稿綋浜庡浘涔︾殑鐩褰曪纴鍙浠ユ牴鎹鐩褰曚腑镄勯〉镰佸揩阃熸垒鍒版墍闇镄勫唴瀹广傚綋琛ㄤ腑链夊ぇ閲忚板綍镞讹纴鑻ヨ佸硅〃杩涜屾煡璇锛岀涓绉嶆悳绱淇℃伅鏂瑰纺鏄鍏ㄨ〃鎼灭储锛屾槸灏嗘墍链夎板綍涓涓鍙栧嚭锛屽拰镆ヨ㈡浔浠惰繘琛屼竴涓瀵规瘆锛岀劧钖庤繑锲炴弧瓒虫浔浠剁殑璁板綍锛岃繖镙峰仛浼氭秷钥楀ぇ閲忔暟鎹搴撶郴缁熸椂闂达纴骞堕犳垚澶ч噺纾佺洏I/O镎崭綔锛涚浜岀嶅氨鏄鍦ㄨ〃涓寤虹珛绱㈠紩锛岀劧钖庡湪绱㈠紩涓镓惧埌绗﹀悎镆ヨ㈡浔浠剁殑绱㈠紩鍊硷纴链钖庨氲繃淇濆瓨鍦ㄧ储寮曚腑镄凴OWID锛堢浉褰扑簬椤电爜锛夊揩阃熸垒鍒拌〃涓瀵瑰簲镄勮板綍銆
銆銆绱㈠紩鏄涓涓鍗旷嫭镄勚佺墿鐞嗙殑鏁版嵁搴撶粨鏋勶纴瀹冩槸镆愪釜琛ㄤ腑涓鍒楁垨鑻ュ共鍒楀肩殑闆嗗悎鍜岀浉搴旂殑鎸囧悜琛ㄤ腑鐗╃悊镙囱瘑杩欎簺鍊肩殑鏁版嵁椤电殑阃昏緫鎸囬拡娓呭崟銆
銆銆绱㈠紩鎻愪緵鎸囧悜瀛桦偍鍦ㄨ〃镄勬寚瀹氩垪涓镄勬暟鎹鍊肩殑鎸囬拡锛岀劧钖庢牴鎹鎭ㄦ寚瀹氱殑鎺掑簭椤哄簭瀵硅繖浜涙寚阍堟帓搴忋傛暟鎹搴扑娇鐢ㄧ储寮旷殑鏂瑰纺涓庢偍浣跨敤涔︾睄涓镄勭储寮旷殑鏂瑰纺寰堢浉浼硷细瀹冩悳绱㈢储寮曚互镓惧埌鐗瑰畾鍊硷纴铹跺悗椤烘寚阍堟垒鍒板寘钖璇ュ肩殑琛屻
銆銆鍦ㄦ暟鎹搴揿叧绯诲浘涓锛屾偍鍙浠ュ湪阃夊畾琛ㄧ殑钬灭储寮/阌钬濆睘镐ч〉涓鍒涘缓銆佺紪杈戞垨鍒犻櫎姣忎釜绱㈠紩绫诲瀷銆傚綋淇濆瓨绱㈠紩镓闄勫姞鍒扮殑琛锛屾垨淇濆瓨璇ヨ〃镓鍦ㄧ殑鍏崇郴锲炬椂锛岀储寮曞皢淇濆瓨鍦ㄦ暟鎹搴扑腑銆
涓鑸鏁版嵁搴揿湪寤虹珛镞剁殑榛樿ょ储寮曟槸涓婚敭锛屼絾鏄鍦ㄤ娇鐢ㄦ煡璇㈣繃绋嬩腑链変簺瀛楁靛线寰浣滀负缁忓父镄勬绱㈡浔浠讹纴姣旀柟璇村叆搴撴椂闂淬佸揿悕銆佺岖被绛夈傚傛灉涓嶅熀浜庝富阌镄勬煡璇㈢粡甯稿彂鐢熺殑璇濓纴鍦ㄨ繖浜涙煡璇㈠瓧娈典笂寤虹珛绱㈠紩鍙浠ュ姞蹇镆ヨ㈤熷害锛屾彁浜ょ▼搴忕殑鍙嶅簲镐ц兘锛
瀵逛簬瑙嗗浘锛屼竴涓鏄绠鍗曟柟渚挎煡璇锛屽悓镞朵篃鎻愰珮瀹夊叏镐э纴鍙鍙傝幂栌搴︾栌绉戜粙缁
銆銆* 绠鍗曟с傜湅鍒扮殑灏辨槸闇瑕佺殑銆傝嗗浘涓崭粎鍙浠ョ亩鍖栫敤鎴峰规暟鎹镄勭悊瑙o纴涔熷彲浠ョ亩鍖栦粬浠镄勬搷浣溿傞偅浜涜缁忓父浣跨敤镄勬煡璇㈠彲浠ヨ瀹氢箟涓鸿嗗浘锛屼粠钥屼娇寰楃敤鎴蜂笉蹇呬负浠ュ悗镄勬搷浣沧疮娆℃寚瀹氩叏閮ㄧ殑𨱒′欢銆
銆銆* 瀹夊叏镐с傞氲繃瑙嗗浘鐢ㄦ埛鍙鑳芥煡璇㈠拰淇鏀逛粬浠镓鑳借佸埌镄勬暟鎹銆傛暟鎹搴扑腑镄勫叾瀹冩暟鎹鍒欐棦鐪嬩笉瑙佷篃鍙栦笉鍒般傛暟鎹搴撴巿𨱒冨懡浠ゅ彲浠ヤ娇姣忎釜鐢ㄦ埛瀵规暟鎹搴撶殑妫绱㈤檺鍒跺埌鐗瑰畾镄勬暟鎹搴揿硅薄涓婏纴浣嗕笉鑳芥巿𨱒冨埌鏁版嵁搴撶壒瀹氲屽拰鐗瑰畾镄勫垪涓娿傞氲繃瑙嗗浘锛岀敤鎴峰彲浠ヨ闄愬埗鍦ㄦ暟鎹镄勪笉钖屽瓙闆嗕笂锛
銆銆浣跨敤𨱒冮檺鍙琚闄愬埗鍦ㄥ彟涓瑙嗗浘镄勪竴涓瀛愰泦涓婏纴鎴栨槸涓浜涜嗗浘鍜屽熀琛ㄥ悎骞跺悗镄勫瓙闆嗕笂銆
銆銆* 阃昏緫鏁版嵁镫绔嬫с傝嗗浘鍙甯锷╃敤鎴峰睆钄界湡瀹炶〃缁撴瀯鍙桦寲甯︽潵镄勫奖鍝嶃
‘伍’ SQLServer2008中的数据压缩功能
SQL Server SP 为我们带来了vardecimal功能 这项功能使得原来定长的decimal数据在数据文件中以可变长的格式存储 据称这项功能可以为典型的数据仓库节省 %的空间 而SQL Server 在这一基础上又进一步增强了数据压缩功能 SQL Server 现在支持行压缩和页面压缩两种选项 数据压缩选项可以在以下对象上启用
未创建聚簇索引的表
创建聚簇索引的表
非聚簇索引(对表设置压缩选项不会影响到该表上的非聚簇索引 因此聚簇索引的压缩需要单独设置)
索引视图
分区表和分区索引中的单个分区
为什么需要数据压缩
首先可能需要讨论的问题就是为什么在存储成本不断降低的今天 微软还要煞费苦心地在SQL Server中实现并且不断改进数据压缩技术呢?
尽管存储成本已经不再是传统意义上的首要考虑因素 但是这并不代表数据库尺寸不是一个问题 因为数据库尺寸除了会影响到存储成本之外 还极大地关联到管理成本和性能问题
首先我们来讨论为什么会有管理成本的问题?因为数据库需要备份 数据库的尺寸越大 那么备份时间就会越长 当然另外一点就是消耗的备份硬件成本也会随之提高(包括需要的备份介质成本和为了满足备份窗口而需要更高级的备份设备带来的采购成本) 还有一种管理成本就是数据库的维护成本 例如我们经常需要完成的DBCC任务 数据库尺寸越大 我们就需要更多的时间来完成这些任务
接着我们再看看性能问题 SQL Server在扫描磁盘读取数据的时候都是按照数据页为单位进行读取的 因此如果一张数据页中包含的数据行数越多 SQL Server在一次数据页IO中获得的数据就会越多 这样也就带来了性能的提升
最后考虑存储的成本 按照原先SQL Server SP 中vardecimal的压缩数据为例 %的空间节省也就意味着 %的存储成本 而按照SQL Server 当前放出的测试数据 采用新的数据压缩技术可以达到 X X的存储率 再加上如果企业要考虑容灾而增加的存储空间 这样节省的存储硬件成本也将是想当可观的
如何使用数据压缩
SQL Server 中的压缩选项可以在创建表或索引时通过Option进行设置 例如 CREATE TABLE TestTable (col int col varchar( )) WITH (DATA_PRESSION = ROW);
如果需要改变一个销渗销分区亏游的压缩选项 则可以用以下语句 ALTER TABLE TestTable REBUILD PARTITION = WITH (DATA PRESSION = PAGE);
如果需要为分区表的各个分区设置不同的压缩选项 可以使用以下的语句 (SQL Server 可以对不同的分区使用不同的压缩选项 这一点对于数据仓库应用是非常重要的 因为数据仓库的事实表通常都会有一个或数个热分区 这些分区中的数据经常需要更新 为了避免数据压缩给这些分区上的数据更新带来额外的处理载荷 可以对这些分区关闭压缩选项) CREATE TABLE PartitionedTable (col int col varchar( )) ON PS (col )喊册 WITH ( DATA_PRESSION = ROW ON PARTITIONS( ) DATA_PRESSION = PAGE ON PARTITION( TO ));
如果是为某个索引设置压缩选项的话 可以使用
CREATE INDEX IX_TestTable_Col ON TestTable (Col ) WITH (DATA_PRESSION = ROW);
如果是修改某个索引的压缩选项 可以使用 ALTER INDEX IX_TestTable_Col ON TestTable REBUILD WITH (DATA_PRESSION = ROW);
SQL Server 同时还提供了一个名为sp_estimate_data_pression_savings存储过程帮助DBA估计激活压缩选项后对象尺寸
数据压缩是怎样工作的
对于行压缩 SQL Server 采用以下三种方法来节省存储空间
减少了与记录相关联的元数据开销 此元数据为有关列 列长度和偏移量的信息 在某些情况下 元数据开销可能大于旧的存储格式
它对于数值类型(例如 integer decimal和float)和基于数值的类型(例如 datetime和money)使用可变长度存储格式
它通过使用不存储空字符的可变长度格式来存储定长字符串
对于页面压缩 SQL Server 则是在一张数据页面上依次采用
行压缩
前缀压缩
字典压缩
配置数据压缩功能需要注意的
尽管SQL Server 的数据压缩功能非常有价值 但是仍然需要注意一些问题
数据压缩功能仅在企业版和开发版中可用
数据压缩可以让一张数据页存储更多的数据行 但是并不能改变单行数据最长 字节这一限制
在一张已经设置了数据压缩的表上创建聚簇索引时 聚簇索引默认继承原表上的压缩选项
在未设置聚簇索引的表上设置页面压缩时 只有以下情况才会获得页面压缩的实际效果
数据使用BULK INSERT语法添加到表中
数据使用INSERT INTO WITH (TABLOCK)语法添加到表中
执行带有页面压缩选项的ALTER TABLE REBUILD命令
在未设置聚簇索引的表上更改压缩选项 会导致该表上所有非聚簇索引都需要重建 因为这些非聚簇索引指向的数据行地址已经都发生了改变
在改变压缩选项时所需要的临时空间大小与创建索引是所需要的空间是一样的 因此对于分区表 我们可以逐个分区设置压缩选项来减少临时空间的需求压力
由于SQL Server 中数据压缩技术其实是SQL Server SP 中vardecimal技术的一个超集 因此设置了数据压缩后就没有必要保留vardecimal了 当然SQL Server 为了保持向后兼容性 在当前版本中仍然保留了vardecimal 但是SQL Server 的下一个版本及可能就会弃用vardecimal选项 因此做了这些设置的数据库应该尽早改变到数据压缩设置下
lishixin/Article/program/Oracle/201311/17483