序列、视图、索引(面试看这个就GO了)

oracle内置对象
序列、视图、索引

序列
create sequence aaa start with 1;


[img]http://dl2.iteye.com/upload/attachment/0123/2291/10d04bf8-d396-3e3c-b0fe-739360ddc0de.png[/img]


使用


[img]http://dl2.iteye.com/upload/attachment/0123/2293/ae86bb12-eb49-3a72-9c2a-d6be9bcb96b6.png[/img]


视图


[img]http://dl2.iteye.com/upload/attachment/0123/2295/dc44fddb-b27a-314d-8c70-a65fc6876915.png[/img]


创建好之后
然后直接用


[img]http://dl2.iteye.com/upload/attachment/0123/2297/1a3989b1-7c76-3010-82f9-3dbe12cb36c2.png[/img]

就OK了
有了视图可以代替子查询,使得sql简洁
视图存放的不是真正的数据,而是查询语句
通过视图可以修改基表


[img]http://dl2.iteye.com/upload/attachment/0123/2299/0804c1cb-dc8c-38dc-8506-3765e6d43c18.png[/img]


前提是视图的数据结构要和基表的数据结构是一样的才可以!
只读视图
但是视图是用来看的,不是用来改的
那么如何在创建视图时以后不让做修改操作呢?答案如下:


[img]http://dl2.iteye.com/upload/attachment/0123/2301/95a055ef-eb77-3c57-b26d-2542263a2414.png[/img]


检查视图
还有一种情况,如果要修改视图,那么视图列本身是没有约束的,那么加上检查视图,就可以到基表中去做约束检查


[img]http://dl2.iteye.com/upload/attachment/0123/2303/df57a788-f28d-36fe-9e29-0fbf622fbbf7.png[/img]


以上都为简单视图
多表联查的结果为复杂视图,仅仅只能用来简化查询
注意:能用表的地方都能用视图!


终于到了索引!
索引的作用


[img]http://dl2.iteye.com/upload/attachment/0123/2305/88e51ac5-fbb5-3b80-9943-ab92a712e0fb.png[/img]


面试题:海量数据如何查询速度快:索引+优化

OK,我们来学习索引
当我们为列创建约束的时候,有一些约束自动就为我们创建了索引


[img]http://dl2.iteye.com/upload/attachment/0123/2307/ccfcc285-3cb1-31c0-8345-8d16e33d83e7.png[/img]


索引分好多种,上面自动添加的叫做唯一值索引
接下来我们自己建索引,叫做普通索引
单字段索引:


[img]http://dl2.iteye.com/upload/attachment/0123/2309/2db3bb4e-4f7b-37e1-a915-e05a0a2b987a.png[/img]


多字段索引


[img]http://dl2.iteye.com/upload/attachment/0123/2311/b4181544-5e73-3c4f-83c4-cb08bf3e32af.png[/img]

其实,索引是一张表,就像书的目录一样,查询东西能够快速定位,不用一页一页的翻来找。
另外,索引是站数据库硬盘和内存空间的,也就是所谓的耗费资源换取速度
最重要的是,为字段加索引之后,是可以换取速度的加快,但是同时会降低增删改的速度,因为做增删改操作的时候,会更新索引表,相当于耗费了两倍的速度!
索引表是数据库自动为我们维护,不用我们自己维护,这就是索引另一个最大的好处。

特殊索引:位图索引
有一种情况,创建的某些列的数据仅仅只有几类情况,比如说
性别:只有男女
某学校学生表的班级:只有一年级二年级到六年级
那么想要快速定位这些数据,比如,我想要查某学校10万学生里二年级的人的信息
那么我们需要一种特殊的索引,叫做位图索引


[img]http://dl2.iteye.com/upload/attachment/0123/2313/7e75f5f3-b2f5-3adf-abba-cac37bf21f61.png[/img]


当我查询


[img]http://dl2.iteye.com/upload/attachment/0123/2315/19f5d3fe-671e-321f-bba7-1f0dbd56d23c.png[/img]

这句话的时候,会很快

加索引规则,只有常用的where限定列,才加索引


[img]http://dl2.iteye.com/upload/attachment/0123/2317/b76ae638-6f30-36ae-8ead-0749525f1824.png[/img]


比如我要经常查时间段,也就是where中界定时间段,那么我们就给时间列加索引


[img]http://dl2.iteye.com/upload/attachment/0123/2319/73e6395c-805a-3c0b-bfee-c8f5f327a990.png[/img]

你可能感兴趣的:(序列、视图、索引(面试看这个就GO了))