SQL数据操作基础(中级)6

SQL数据操作基础(中级)6,第1张

SQL数据操作基础(中级)6,第2张

第10章“基本SQL”给你一个SQL的初步介绍。您学习了如何使用SELECT语句进行查询,还学习了如何构建自己的表。在本章中,您将加深对SQL的了解。您将学习如何构建索引来加快查询速度。您还将了解到,如果使用更多的SQL语句和函数来操作表中的数据。

建立索引

假设你想在这本书里找一句话。可以一页一页的搜,但是会花很多时间。通过使用这本书的索引,你可以快速找到你想要搜索的主题。

表格的索引与附在书上的索引非常相似。可以大大提高查询速度。对于大型表,通过添加索引,通常需要几个小时才能完成的查询可以在几分钟内完成。因此,没有理由向需要频繁查询的表添加索引。

注意:

当你的内存容量或硬盘空不足时,也许你不想给一个表加索引。对于包含索引的数据库,SQL Sever需要相当大的额外空空间。例如,构建一个聚集索引,大约需要1.2倍空的数据大小。若要查看空之间数据库中表的索引大小,可以使用系统存储过程sp_spaceused,并将对象名指定为索引表名。

聚集索引和非聚集索引

假设你通过这本书的索引找到了一个句子的页码。一旦你知道了页码,你可以漫无目的地找这本书,直到你找到正确的页码。通过随机搜索,最终可以到达正确的页码。但是,有一种更有效的方法可以找到页码。

先把书翻到一半左右的地方。如果你要找的页码小于书的一半,就把书翻到四分之一。否则,把书翻到四分之三。这样,您可以继续将书分成更小的部分,直到找到正确的页码。这是一种非常有效的查找页面的方法。

SQL Sever的表索引以类似的方式工作。表索引由一组页面组成,这些页面形成了一个树形结构。根在逻辑上将一个表的记录分成两部分,并且通过指向另外两个页面。根页面指向的两个页面将记录分成更小的部分。每页将记录分成更小的分区,直到它到达叶页。

有两种类型的索引:聚集索引和非聚集索引。在聚集索引中,索引树的叶页包含实际数据:记录的索引顺序与物理顺序相同。在非聚集索引中,叶页指向表中的记录:记录的物理顺序不一定与逻辑顺序相关。

簇索引与目录非常相似,目录的顺序与实际页码顺序一致。非聚集索引更像是书籍的标准索引表,索引表中的顺序通常与实际页码顺序不一致。一本书可能有多个索引。例如,它可能同时具有主题索引和作者索引。同样,一个表可以有多个非聚集索引。

通常,您使用聚集索引,但是您应该知道这两种索引的优缺点。

每个表只能有一个聚集索引,因为表中的记录只能以一种物理顺序存储。通常,您需要根据标识字段在表上建立聚集索引。但是,您也可以为其他类型的字段创建聚集索引,如字符、数字和日期时间字段。

从具有聚集索引的表中提取数据比从具有非聚集索引的表中提取数据要快。当需要获取一定范围的数据时,使用聚集索引比使用非聚集索引更好。例如,假设您使用一个表格来记录访问者在您的网络上的活动。如果希望检索某段时间内的登录信息,应该在该表的DATETIME字段上设置聚集索引。聚集索引的主要限制是每个表只能建立一个聚集索引。但是,一个表可以有多个非聚集索引。事实上,每个表最多可以建立249个非聚集索引。还可以在表上创建聚集索引和非聚集索引。

如果您想从网络活动日志中获取数据,不仅要按日期,还要按用户名。在这种情况下,同时建立聚集索引和非聚集索引是有效的。您可以为日期和时间字段设置聚集索引,为用户名字段设置非聚集索引。如果发现需要更多的索引方法,可以添加更多的非聚集索引。

非聚集索引需要大量硬盘空和内存。此外,尽管非聚集索引可以提高从表中获取数据的速度,但它也会降低向表中插入和更新数据的速度。每当更改具有非聚集索引的表中的数据时,必须同时更新索引。因此,在对表建立非聚集索引时,应该仔细考虑。如果您预计一个表需要频繁地更新数据,就不要在其上建立太多的非聚集索引。此外,如果硬盘和内存空之间的空间有限,那么也应该限制非聚集索引的数量。

索引属性

这两种类型的索引都有两个重要的属性:可以使用任一类型同时索引多个字段(复合索引);这两种类型的索引都可以指定为索引。

您可以为多个字段构建复合索引,甚至是复合聚集索引。假设有一个记录访问者姓氏和名字的表。如果您想根据完整的姓名从表中获取数据,您需要构建姓氏字段和名字字段的索引。这不同于为两个字段建立单独的索引。当您希望同时查询多个字段时,应该建立多个字段的索引。如果要分别查询每个字段,应该为每个字段建立一个独立的索引。

两种类型的索引都可以被指定为索引。如果某个字段被编入索引,您将无法在该字段中输入重复值。标识字段将自动成为值字段,但您也可以索引其他类型的字段。假设您使用一个表来保存您的网点的用户密码,您肯定不希望两个用户有相同的密码。通过强制字段成为值字段,可以防止这种情况发生。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » SQL数据操作基础(中级)6

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情