建立索引express
1.建立索引语法oracle
CREATE [UNIQUE] | [BITMAP] INDEX index_name --unique表示惟一索引 ON table_name([column1 [ASC|DESC],column2 --bitmap,建立位图索引 [ASC|DESC],…] | [express]) [TABLESPACE tablespace_name] [PCTFREE n1] --指定索引在数据块中空闲空间 [STORAGE (INITIAL n2)] [NOLOGGING] --表示建立和重建索引时容许对表作DML操做,默认状况下不该该使用 [NOLINE] [NOSORT]; --表示建立索引时不进行排序,默认不适用,若是数据已是按照该索引顺序排列的可使用
1建立位图索引函数
create bitmap index index_sno on student(sno);优化
2建立普通索引spa
create index index_id on 表名(字段);code
1. 当常常要访问一些函数或者表达式时,能够将其存储在索引中,这样下次访问时,该值已经计算出来了,能够加快查询速度blog
2. 函数索引既可使用B数索引,也可使用位图索引;当函数结果不肯定时采用B树索引,结果是固定的某几个值时使用位图索引排序
3. 函数索引中能够水泥用len、trim、substr、upper(每行返回独立结果),不能使用如sum、max、min、avg等索引
3建立函数索引字符串
create index fbi on student (upper(name));
1. 若是有两个或者以上的索引,其中有一个惟一性索引,而其余是非惟一,这种状况下oracle将使用惟一性索引而彻底忽略非惟一性索引
2. 至少要包含组合索引的第一列(即若是索引创建在多个列上,只有它的第一个列被where子句引用时,优化器才会使用该索引)
3. 小表不要简历索引
4. 对于基数大的列适合创建B树索引,对于基数小的列适合简历位图索引
5. 列中有不少空值,但常常查询该列上非空记录时应该创建索引
6. 常常进行链接查询的列应该建立索引
7. 使用create index时要将最常查询的列放在最前面
8. LONG(可变长字符串数据,最长2G)和LONG RAW(可变长二进制数据,最长2G)列不能建立索引
9.限制表中索引的数量(建立索引耗费时间,而且随数据量的增大而增大;索引会占用物理空间;当对表中的数据进行增长、删除和修改的时候,索引也要动态的维护,下降了数据的维护速度)
建立视图
语法: create [ or replace ] [ force ] view [schema.]view_name
[ (column1,column2,...) ]
as
select ...
[ with check option ] [ constraint constraint_name ]
[ with read only ];
1.虚拟视图
CREATE OR REPLACE FORCE VIEW "SY_GWCS"."RCV_TB_VIEW" ("DID", "SRID", "ISREAD", "ISQIANSHOU", "TS", "ISDEL", "UNITID", "TITLE", "FAWENDANWEI", "FAWENRIQI", "WENHAO") AS
select a.did,a.srid ,a.isread,a.isqianshou,a.ts,a.isdel,a.unitid,b.title,b.fawendanwei,b.fawenriqi,b.wenhao from RCV_TB a
2.物理视图
CREATE MATERIALIZED VIEW
(好比天天晚上10:00定时刷新一次):create materialized view mv_name refresh force on demand start with sysdate next to_date( concat( to_char( sysdate+1,'dd-mm-yyyy'),' 22:00:00'),'dd-mm-yyyy hh24:mi:ss')