回顾
键保留表 :
举例:
A表:id是主键, name, pid外键 B表:id主键 name
select A.name,B.name from A,B where A.pid=B.id
结论 :
-
多的一方是键保留表
-
两张表消笛卡尔积,笛卡尔积主键所在的表是键保留表。
昨日遗留
同义词(了解)
概念 :
可以理解为近义词;放在Oracle中就是起别名。同义词是基对象的别名,表、视图、物化视图全部可以起别名。
创建语法 :
create [public] SYNONYM synooym for object;
--synonym表示同义词的名称,object是要创建的对象名称,public是权限范围
案例 :创建一个私有同义词
--不加[public]就代表私有
create synonym owner for t_owners;
--可以用来替代原表对象
select * from owner;
--但是更换用户后无法访问,因为是私有的。如果是公有大家都可以看到。
oracle中varchar是常用varchar2的同义词;可以给同义词再创造同义词
-
私有同义词:当前用户可以使用,dba权限用户必须使用 用户.同义词 的格式来访问;
-
公有同义词:其他用户都可以访问。
索引(重点)
索引技术只用于查询!可以提高查询效率,体现在大数据量场景(100W以上,且某字段容易被查询)
索引就是把某一列的值和某一行数据建立映射关系的过程。
通过索引可以快速查找到数据的物理地址rowid;索引是一种特殊的数据,需要占用存储空间。
创建索引
在表的设计阶段创建,后期有需求还可以追加索引。在建表时如果指定了主键,Oracle会自动创建索引,即主键自带索引。
--创建索引语法
create index 索引名 on 表名(列名)
在查询建立索引的列名为使用的就是索引。
--插入一百万条数据,SQL/PL语法
begin
for x in 1..1000000
loop
insert into 表名 values(数据);
end loop;
commit;
end;
索引的分类
- 唯一索引
--语法 加关键字unique
create unique index 索引名称 on 表名(列名);
--唯一索引时要比普通索引快一些的
- 复合索引
基于几列数据建立的索引叫做唯一索引
--语法
create index 索引名 on 表名(列1名,列2名。。。)
--小细节:列名的顺序必须和查询顺序相同
和唯一索引相比,速度稍有降低。
- 反向索引(了解)
当字段值本身为连续的值,建立普通索引生成的树是歪的,所以需要把它随机化,即把它的顺寻的2进制倒过来再转为10进制创建索引。
--语法,加关键字reverse
create index 索引名称 on 表名(列名) reverse;
- 位图索引(了解)
使用场景:位图索引适合创建在低基数列上位图索引不直接存储 ROWID,而是存储字节位到 ROWID 的映射
优点:减少响应时间,节省空间占用
--语法,关键字bitmap
create bitmap index 索引名称 on 表名(列名);
网友评论