视图,索引基础
来源:互联网 发布:淘宝客服的沟通技巧 编辑:程序博客网 时间:2024/04/28 09:36
一、视图
create view 如果创建的视图已经存在,会报一个错误 -‘对象已存在’
create or replace view 则不会报错,如果创建的视图已存在,它会先删除原来的视图,然后创建你要创建的视图
视图的创建语法如下:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 视图名[(别名1,别名2...)]
AS 子查询
[WITH CHECK OPTION [CONSTRAINT 约束名]]
[WITH READ ONLY]
其中:
OR REPLACE 表示替代已经存在的视图。
FORCE表示不管基表是否存在,创建视图。
NOFORCE表示只有基表存在时,才创建视图,是默认值。
别名是为子查询中选中的列新定义的名字,替代查询表中原有的列名。
子查询是一个用于定义视图的SELECT查询语句,可以包含连接、分组及子查询。
WITH CHECK OPTION表示进行视图插入或修改时必须满足子查询的约束条件。后面的约束名是该约束条件的名字。
WITH READ ONLY 表示视图是只读的。
在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE
视图上的DML语句有如下限制:
只能修改一个底层的基表
如果修改违反了基表的约束条件,则无法更新视图
如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图
如果视图包含伪列或表达式,则将无法更新视图
二、索引
(一)、
索引是与表相关的一个可选结构
用以提高 SQL 语句执行的性能
减少磁盘I/O
使用 CREATE INDEX 语句创建索引
在逻辑上和物理上都独立于表的数据
Oracle 自动维护索引
创建标准索引
CREATE INDEX item_index ON itemfile (itemcode)
TABLESPACE index_tbs;
重建索引
ALTER INDEX item_index REBUILD;
删除索引
DROP INDEX item_index;
(二)、
索引的类型:
1.唯一索引
唯一索引确保在定义索引的列中没有重复值
Oracle 自动在表的主键列上创建唯一索引
使用CREATE UNIQUE INDEX语句创建唯一索引
CREATE UNIQUE INDEX item_index
ON itemfile (itemcode);
2.组合索引
组合索引是在表的多个列上创建的索引
索引中列的顺序是任意的
如果 SQL 语句的 WHERE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度
CREATE INDEX comp_index
ON itemfile(p_category, itemrate);
3.反向键索引
反向键索引反转索引列键值的每个字节
通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上
创建索引时使用REVERSE关键字
CREATE INDEX rev_index
ON itemfile (itemcode) REVERSE;
ALTER INDEX rev_index REBUID NOREVERSE;
4.位图索引
位图索引适合创建在低基数列上
位图索引不直接存储ROWID,而是存储字节位到ROWID的映射
减少响应时间
节省空间占用
CREATE BITMAP INDEX bit_index
ON order_master (orderno);
5.基于函数的索引
基于一个或多个列上的函数或表达式创建的索引
表达式中不能出现聚合函数
不能在LOB类型的列上创建
创建时必须具有 QUERY REWRITE 权限
CREATE INDEX lowercase_idx
ON toys (LOWER(toyname));
SELECT toyid FROM toys
WHERE LOWER(toyname)='doll';
(三)、索引组织表
索引组织表的数据存储在与其关联的索引中
索引中存储的是行的实际数据,而不是ROWID
基于主键访问数据
CREATE TABLE 命令与 ORGANIZATION INDEX 子句一起用于创建索引组织表
CREATE TABLE ind_org_tab (
vencode NUMBER(4) PRIMARY KEY,
venname VARCHAR2(20)
)
ORGANIZATION INDEX;
(四)、索引中的分区
可以将索引存储在不同的分区中
与分区有关的索引有三种类型:
1.局部分区索引 - 在分区表上创建的索引,在每个表分区上创建独立的索引,索引的分区范围与表一致
2.全局分区索引 - 在分区表或非分区表上创建的索引,索引单独指定分区的范围,与表的分区范围或是否分区无关
3.全局非分区索引 - 在分区表上创建的全局普通索引,索引没有被分区
(五)、获取索引的信息
与索引有关的数据字典视图有:
USER_INDEXES - 用户创建的索引的信息
USER_IND_PARTITIONS - 用户创建的分区索引的信息
USER_IND_COLUMNS - 与索引相关的表列的信息
SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME
FROM USER_IND_COLUMNS
ORDER BY INDEX_NAME, COLUMN_POSITION;
三、数据字典
数据字典 (Data dictionary) 是一种用户可以访问的记录数据库和应用程序元数据的目录。
数据字典通常包括五个部分:
1.数据项
2.数据结构
3.数据流
4.数据存储
5.处理过程
数据字典分为:
1.主动数据字典,是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。
2.被动数据字典,是指修改时必须手工更新其内容的数据字典。
- 视图,索引基础
- MS SQL入门基础:索引视图
- SQl分区表,视图,索引,函数基础理解
- MySQL语句基础之索引&&视图
- 索引视图
- 索引视图
- 索引视图
- 索引视图
- 索引视图
- 视图索引
- 索引视图
- 索引视图
- 索引、视图
- mysql-表、ER图、索引与视图的基础操作
- MySQL基础之表操作 索引 约束 视图等介绍
- 索引视图的建立
- 索引视图的建立
- 视图索引问题
- 人生职业生涯的五个黄金阶段
- 测试发文
- ASP.NET 导出Excel表方法汇总(包含错误信息调试方法)
- heartbeat是怎么工作的
- Tomcat 6配置注意事项
- 视图,索引基础
- 程序人生
- 图片上传测试
- MSSQL优化之————探索MSSQL执行计划
- Java关键字new和newInstance的区别
- 如何让select的样式也漂亮起来
- 二十几种CSS分页效果
- 《WebGIS开发实践手册》1.1.3 WWW的工作协议
- 使用IHttpHandler做权限控制