仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 589|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之数据库索引

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:19:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
闪回的目的是要让数据库在commit之后,还能恢复到之前的某个状态,整库或指定的表。用户对数据库最频仍的操纵是举行数据查询。一样平常情形下,数据库在举行查询操纵时必要对全部表举行数据搜刮。当表中的数据良多时,搜刮数据就必要很长的工夫,这就形成了服务器的资本华侈。为了进步检索数据的才能,数据库引进了索引机制。本章将先容索引的观点及其创立与办理。

8.1.1索引的观点
索引是一个独自的、物理的数据库布局,它是某个表中一列或多少列值的汇合和响应的指向表中物理标识这些值的数据页的逻辑指针清单。索引是依附于表创建的,它供应了数据库中编排表中数据的外部办法。一个表的存储是由两部分构成的,一部分用来寄存表的数据页面,另外一部分寄存索引页面。索引就寄存在索引页面上,一般,索引页面相对数据页面来讲小很多。当举行数据检索时,体系先搜刮索引页面,从中找到所需数据的指针,再间接经由过程指针从数据页面中读取数据。从某种水平上,能够把数据库看做一本书,把索引看做书的目次,经由过程目次查找书中的信息,明显较没有目次的书便利、快速。

索引和关头字及束缚有较年夜的接洽。关头字能够分为两类:一种是逻辑关头字,即在“数据库基本章”节中先容的;另外一种是物理关头字,它用来界说索引的列,也即索引。

8.1.2索引的布局
(1)索引的B-树布局
SQLServer中的索引是以B-树布局来保护的,如-1所示。B-树是一个多条理、自保护的布局。一个B-树包含一个顶层,称为根节点(RootNode);0到多其中间层(Intermediate);一个底层(Level0),底层中包含多少叶子节点(LeafNode)。在-1中,每一个方框代表一个索引页,索引列的宽度越年夜,B-树的深度越深,即条理越多,



读取纪录所要会见的索引页就越多。也就是说,数据查询的功能将随索引列条理数量的增添而下降。-1索引的B-树布局
在SQLServer的数据库中按存储布局的分歧将索引分为两类:簇索引(ClusteredIndex)和非簇索引(NonclusteredIndex)。

(2)簇索引簇索引对表的物理数据页中的数据按列举行排序,然后再从头存储到磁盘上,即簇索引与数据是混为一体,的它的叶节点中存储的是实践的数据。因为簇索引对表中的数据逐一举行了排序,因而用簇索引查找数据很快。但因为簇索引将表的一切数据完整从头分列了,它所必要的空间也就出格年夜,也许相称于表中数据所占空间的120%。表的数据行只能以一种排序体例存储在磁盘上,以是一个表只能有一个簇索引。

(3)非簇索引非簇索引具有与表的数据完整分别的布局,利用非簇索引不必将物理数据页中的数据按列排序。非簇索引的叶节点中存储了构成非簇索引的关头字的值和行定位器。行定位器的布局和存储内容取决于数据的存储体例。假如数据是以簇索引体例存储的,则行定位器中存储的是簇索引的索引键;假如数据不是以簇索引体例存储的,这类体例又称为堆存储体例(HeapStructure),则行定位器存储的是指向数据行的指针。非簇索引将行定位器按关头字的值用必定的体例排序,这个按次与表的行在数据页中的排序是不婚配的。因为非簇索引利用索引页存储因而它比簇索引必要更多的存储空间且检索效力较低但一个表只能建一个簇索引,当用户必要创建多个索引时就必要利用非簇索引了。从实际上讲,一个表最多能够建249个非簇索引。
mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功
蒙在股里 该用户已被删除
沙发
发表于 2015-1-19 08:43:14 | 只看该作者
入门没那么困难,精通没那么容易
透明 该用户已被删除
板凳
发表于 2015-1-24 23:50:59 | 只看该作者
比如日志传送、比如集群。。。
活着的死人 该用户已被删除
地板
 楼主| 发表于 2015-2-2 16:35:07 | 只看该作者
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
小女巫 该用户已被删除
5#
发表于 2015-2-8 02:24:02 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
飘灵儿 该用户已被删除
6#
发表于 2015-2-24 02:05:02 | 只看该作者
入门没那么困难,精通没那么容易
再见西城 该用户已被删除
7#
发表于 2015-3-7 10:28:41 | 只看该作者
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
第二个灵魂 该用户已被删除
8#
发表于 2015-3-15 00:05:17 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
9#
发表于 2015-3-21 16:26:23 | 只看该作者
发几份SQL课件,以飨阅者
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 16:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表