爱飞 发表于 2015-1-16 22:32:04

MYSQL编程:SQL数据操纵基本(中级)6

客户还是可以使用DBaaS系统所能提供的所有能力。数据库云服务消除了组织对专职人员、本地数据库存储设备的需要。他们不必安装、配置和维护任何软硬件。数据第十章“SQL基本”向你开端先容了SQL。你学会了怎样用SELECT语句举行查询,你还学会了怎样创建本人的表。在这一章里,你将加深你的SQL常识。你将进修怎样创建索引来加速查询速率。你还将学会假如用更多的SQL语句和函数来操纵表中的数据。

创建索引

假定你想找到本书中的某一个句子。你能够一页一页地逐页搜刮,但这会花良多工夫。而经由过程利用本书的索引,你能够很快地找到你要搜刮的主题。

表的索引与附在一本书前面的索引十分类似。它能够极年夜地进步查询的速率。对一个较年夜的表来讲,经由过程加索引,一个一般要消费几个小时来完成的查询只需几分钟就能够完成。因而没有来由对必要频仍查询的表增添索引。

注重:

当你的内存容量或硬盘空间不敷时,大概你不想给一个表增添索引。关于包括索引的数据库,SQLSever必要一个可不雅的分外空间。比方,要创建一个聚簇索引,必要约莫1.2倍于数据巨细的空间。要看一看一个表的索引在数据库中所占的空间巨细,你可使用体系存储历程sp_spaceused,工具名指定为被索引的表名。

聚簇索引和非聚簇索引

假定你已经由过程本书的索引找到了一个句子地点的页码。一旦已晓得了页码后,你极可能漫无目标翻寻这本书,直至找到准确的页码。经由过程随机的翻寻,你终极能够抵达准确的页码。可是,有一种找到页码的更无效的办法。

起首,把书翻到也许一半的中央,假如要找的页码比半本书处的页码小,就书翻到四分之一处,不然,就把书翻到四分之三的中央。经由过程这类办法,你能够持续把书分红更小的部分,直至找到准确的页码四周。这是找到册页的十分无效的一种办法。

SQLSever的表索引以相似的体例事情。一个表索引由一组页构成,这些页组成了一个树形布局。根页经由过程指向别的两个页,把一个表的纪录从逻辑上分红和两个部分。而根页所指向的两个页又分离把纪录支解成更小的部分。每一个页都把纪录分红更小的支解,直至抵达叶级页。

索引有两品种型:聚簇索引和非聚簇索引。在聚簇索引中,索引树的叶级页包括实践的数据:纪录的索引按次与物理按次不异。在非聚簇索引中,叶级页指向表中的纪录:纪录的物理按次与逻辑按次没有一定的接洽。

聚簇索引十分象目次表,目次表的按次与实践的页码按次是分歧的。非聚簇索引则更象书的尺度索引表,索引表中的按次一般与实践的页码按次是纷歧致的。一本书大概有多个索引。比方,它大概同时有主题索引和作者索引。一样,一个表能够有多个非聚簇索引。

一般情形下,你利用的是聚簇索引,可是你应当对两品种型索引的优弱点都有所了解。

每一个表只能有一个聚簇索引,由于一个表中的纪录只能以一种物理按次寄存。一般你要对一个表依照标识字段创建聚簇索引。可是,你也能够对别的范例的字段创建聚簇索引,如字符型,数值型和日期工夫型字段。

从创建了聚簇索引的表中掏出数据要比创建了非聚簇索引的表快。当你必要掏出必定局限内的数据时,用聚簇索引也比用非聚簇索引好。比方,假定你用一个表来纪录会见者在你网点上的举动。假如你想掏出在必定工夫段内的登录信息,你应当对这个表的DATETIME型字段创建聚簇索引。

对聚簇索引的次要限定是每一个表只能创建一个聚簇索引。可是,一个表能够有不止一个非聚簇索引。实践上,对每一个表你最多能够创建249个非聚簇索引。你也能够对一个表同时创建聚簇索引和非聚簇索引。

假设你不但想依据日期,并且想依据用户名从你的网点举动日记中取数据。在这类情形下,同时创建一个聚簇索引和非聚簇索引是无效的。你能够对日期工夫字段创建聚簇索引,对用户名字段创建非聚簇索引。假如你发明你必要更多的索引体例,你能够增添更多的非聚簇索引。

非聚簇索引必要大批的硬盘空间和内存。别的,固然非聚簇索引能够进步从表中取数据的速率,它也会下降向表中拔出和更新数据的速率。每当你改动了一个创建了非聚簇索引的表中的数据时,必需同时更新索引。因而你对一个表创建非聚簇索引时要稳重思索。假如你估计一个表必要频仍地更新数据,那末不要对它创建太多非聚簇索引。别的,假如硬盘和内存空间无限,也应当限定利用非聚簇索引的数目。

索引属性

这两品种型的索引都有两个主要属性:你能够用二者中任一品种型同时对多个字段创建索引(复合索引);两品种型的索引都能够指定为独一索引。

你能够对多个字段创建一个复合索引,乃至是复合的聚簇索引。假设有一个表纪录了你的网点会见者的姓和名字。假如你但愿依据完全姓名从表中取数据,你必要创建一个同时对姓字段和名字字段举行的索引。这和分离对两个字段创建独自的索引是分歧的。当你但愿同时对不止一个字段举行查询时,你应当创建一个对多个字段的索引。假如你但愿对各个字段举行分离查询,你应当对各字段创建自力的索引。

两品种型的索引都能够被指定为独一索引。假如对一个字段创建了独一索引,你将不克不及向这个字段输出反复的值。一个标识字段会主动成为独一值字段,但你也能够对别的范例的字段创建独一索引。假定你用一个表来保留你的网点的用户暗码,你固然不但愿两个用户有不异的暗码。经由过程强迫一个字段成为独一值字段,你能够避免这类情形的产生。
如果互联网服务提供商,支撑数据的云服务,或它们之间任一点网络被堵塞或中断,他们就会遇到与数据延迟或应用程序故障有关的问题。如果问题发生在企业内部,解决方案提供商可以排除故障找出原因。

小女巫 发表于 2015-1-19 16:15:02

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

莫相离 发表于 2015-1-25 14:33:32

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

因胸联盟 发表于 2015-2-2 22:28:06

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。

不帅 发表于 2015-2-8 15:00:37

我们学到了什么?思考问题的时候从表的角度来思考问

若相依 发表于 2015-2-25 19:53:41

Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。

谁可相欹 发表于 2015-3-8 02:08:18

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

若天明 发表于 2015-3-15 20:25:15

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。

金色的骷髅 发表于 2015-3-22 04:09:30

还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。

爱飞 发表于 2015-3-22 04:09:30

也可谈一下你是怎么优化存储过程的?

第二个灵魂 发表于 2015-3-22 04:09:30

备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
页: [1]
查看完整版本: MYSQL编程:SQL数据操纵基本(中级)6