精华内容
下载资源
问答
  • Oracle创建索引sql语句

    千次阅读 2020-05-21 10:06:04
    CREATE INDEX POLICYIMPART_INDEX ON ROOTE.W_POLICYIMPART( POLICYID ASC, IMPARTCODE ASC, CUSTOMERTYPE ASC )POLICYIMPART_INDEX索引名称 ROOTE.W_POLICYIMPART表名

    CREATE INDEX POLICYIMPART_INDEX ON ROOTE.W_POLICYIMPART(
    POLICYID ASC,
    IMPARTCODE ASC,
    CUSTOMERTYPE ASC

    )POLICYIMPART_INDEX索引名称 ROOTE.W_POLICYIMPART表名

    oracle新增表字段
    ALTER TABLE “ROOTE”.“T_BANK_MAINTAIN” ADD (
    “WORK_ACC_NAME” VARCHAR2 (100) DEFAULT ‘操作收费额度用户’ NULL
    );

    展开全文
  • Oracle创建索引、视图SQL语句

    千次阅读 2020-05-19 12:23:36
    一、索引 1、添加索引 create index 索引对象名 on 索引对应表名(表内索引对象字段名); 例:需创建包含userid属性的userinfo表。 create index userid on system.userinfo(userid); 2、删除索引 drop index 索引对象...

    一、索引

    1、添加索引
    create index 索引对象名 on 索引对应表名(表内索引对象字段名);
    例:需创建包含userid属性的userinfo表。
    create index userid on system.userinfo(userid);

    2、删除索引
    drop index 索引对象名;
    例:
    drop index userid;

    二、视图(并不是真实存在的一张表)

    1、创建视图
    create view 视图名(学号,姓名,科目,成绩) as
    select 对应在表格中的字段名
    from 涉及到的多张表名
    where 多张表通过id连接

    例:需创建学生信息表包含学生id和学生姓名,科目表包含科目id和科目名称,成绩表包括成绩id、学生id和科目id。
    create view system.info(学号,姓名,科目,成绩) as
    select userinfo.userid,userinfo.username,subject.subname,score.scnum
    from userinfo,subject,score
    where score.userid=userinfo.userid and score.subid=subject.subid;

    2、查看视图信息
    select * from 视图名;
    例:
    select * from system.info;

    ~注:基础增删改查SQL语句学习,可点击:SQL语句编写(增、删、改、查、序列)

    展开全文
  • 1.索引的创建与使用 2.创建索引的原则 3.索引的分类 4.创建索引的多种方法 5.管理索引 6.索引优化 7.查看、修改索引属性 8.修改索引名 9.删除索引
  • oracle创建索引语句

    千次阅读 2020-06-30 21:46:51
    oracle : 单索引 create index 索引名称 on table(column) 删除索引 drop index 索引名称 复合索引 create index WBSINDEX ON project_info(wbs,is_delete) 查询某张表中所有索引 select * from ALL_INDEXS ...
    
    oracle : 
    
    单索引
    create index 索引名称 on table(column)
    
    删除索引
    drop index 索引名称
    
    复合索引
    create index WBSINDEX ON project_info(wbs,is_delete)
    
    查询某张表中所有索引
    select * from ALL_INDEXS where table_name = project_info
    
    查询某张表加了索引的列
    select * from ALL_IND_COLUMN where table_name = project_info
    
    索引优缺点:
    优点 : 加快查询速度
    缺点 : 更新,要把索引也进行更新
    
    
    展开全文
  • 虽然几张表的数据量都比较大(都在百万级以上),但是也都有正确创建索引,不知道到底慢在了哪里,下面展开调查。 经过几次排除,把问题范围缩小在索引上,首先在确定索引本身没有问题的前提下,考虑索引有没有被...
  • Oracle 建立索引SQL优化 数据库索引: 索引有单列索引 复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。 建设原则...

    Oracle 建立索引及SQL优化

    数据库索引:

    索引有单列索引
    复合索引之说


    如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。

    建设原则:

     1、索引应该经常建在Where 子句经常用到的列上。如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%。则应该考虑。

     2、对于两表连接的字段,应该建立索引。如果经常在某表的一个字段进行Order By 则也经过进行索引。

     3、不应该在小表上建设索引。

    优缺点:
     1、索引主要进行提高数据的查询速度。 当进行DML时,会更新索引。因此索引越多,则DML越慢,其需要维护索引。 因此在创建索引及DML需要权衡。

    创建索引:
     单一索引:Create Index <Index-Name> On <Table_Name>(Column_Name);

     复合索引: Create Index i_deptno_job on emp(deptno,job); —>在emp表的deptno、job列建立索引。

      select * from emp where deptno=66 and job='sals' ->走索引。

      select * from emp where deptno=66 OR job='sals' ->将进行全表扫描。不走索引

      select * from emp where deptno=66 ->走索引。

      select * from emp where job='sals' ->进行全表扫描、不走索引。

      如果在where 子句中有OR 操作符或单独引用Job 列(索引列的后面列) 则将不会走索引,将会进行全表扫描。

     


    Sql 优化:

    当Oracle数据库拿到SQL语句时,其会根据查询优化器分析该语句,并根据分析结果生成查询执行计划。
    也就是说,数据库是执行的查询计划,而不是Sql语句。
    查询优化器有rule-based-optimizer(基于规则的查询优化器) 和Cost-Based-optimizer(基于成本的查询优化器)。
    其中基于规则的查询优化器在10g版本中消失。
    对于规则查询,其最后查询的是全表扫描。而CBO则会根据统计信息进行最后的选择。


    1、先执行From ->Where ->Group By->Order By

    2、执行From 字句是从右往左进行执行。因此必须选择记录条数最少的表放在右边。这是为什么呢?  

    3、对于Where字句其执行顺序是从后向前执行、因此可以过滤最大数量记录的条件必须写在Where子句的末尾,而对于多表之间的连接,则写在之前。
    因为这样进行连接时,可以去掉大多不重复的项。  

    4. SELECT子句中避免使用(*)ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间

    5、索引失效的情况:
     ① Not Null/Null 如果某列建立索引,当进行Select * from emp where depto is not null/is null。 则会是索引失效。
     ② 索引列上不要使用函数,SELECT Col FROM tbl WHERE substr(name ,1 ,3 ) = 'ABC' 
    或者SELECT Col FROM tbl WHERE name LIKE '%ABC%' 而SELECT Col FROM tbl WHERE name LIKE 'ABC%' 会使用索引。

     ③ 索引列上不能进行计算SELECT Col FROM tbl WHERE col / 10 > 10 则会使索引失效,应该改成
    SELECT Col FROM tbl WHERE col > 10 * 10

     ④ 索引列上不要使用NOT ( != 、 <> )如:SELECT Col FROM tbl WHERE col ! = 10 
    应该 改成:SELECT Col FROM tbl WHERE col > 10 OR col < 10 。

    6、用UNION替换OR(适用于索引列)
      union:是将两个查询的结果集进行追加在一起,它不会引起列的变化。 由于是追加操作,需要两个结果集的列数应该是相关的,
    并且相应列的数据类型也应该相当的。union 返回两个结果集,同时将两个结果集重复的项进行消除。 如果不进行消除,用UNOIN ALL.

    通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描. 注意, 以上规则只针对多个索引列有效. 
    如果有column没有被索引, 查询效率可能会因为你没有选择OR而降低. 在下面的例子中, LOC_ID 和REGION上都建有索引.

      高效:
      SELECT LOC_ID , LOC_DESC , REGION
      FROM LOCATION
      WHERE LOC_ID = 10
      UNION
      SELECT LOC_ID , LOC_DESC , REGION
      FROM LOCATION
      WHERE REGION = “MELBOURNE”

      低效:
      SELECT LOC_ID , LOC_DESC , REGION
      FROM LOCATION
      WHERE LOC_ID = 10 OR REGION = “MELBOURNE”
      如果你坚持要用OR, 那就需要返回记录最少的索引列写在最前面.

    7. 用EXISTS替代IN、用NOT EXISTS替代NOT IN
    在许多基于基础表的查询中, 为了满足一个条件, 往往需要对另一个表进行联接. 在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率. 
    在子查询中, NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下, NOT IN都是最低效的(因为它对子查询中的表执行了一个全表遍历). 
    为了避免使用NOT IN, 我们可以把它改写成外连接(Outer Joins)或NOT EXISTS.

    例子:

    高效: SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X’ FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB’)

    低效: SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB’)

    展开全文
  • Oracle 建立索引SQL优化

    千次阅读 多人点赞 2018-02-11 09:53:22
    索引有单列索引和复合索引之说。 建设原则:  1、索引应该经常建在Where 子句经常用到的列上。如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%。则应该考虑。  2、对于两表连接的字段,...
  • Oracle 创建索引语法

    千次阅读 2018-05-04 17:16:52
    1、创建索引的标准语法以下为引用内容:  CREATE INDEX 索引名 ON 表名 (列名)TABLESPACE 表空间名;例如:以下为引用内容:  CREATE INDEX idx_of_imsi ON uim_auth_file(imsi) TABLESPACE users;2、创建唯一索引...
  • NULL 博文链接:https://hackpro.iteye.com/blog/1845366
  • 数据库索引:索引有单列索引复合索引之说如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。建设原则: 1、索引应该经常建在Where 子句...
  • ORACLE创建索引

    千次阅读 2017-11-24 11:54:00
    适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引   oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引   创建索引的标准语法: ...
  • oracle 分析慢sql创建索引

    千次阅读 2018-09-04 10:02:18
    第一步:explain plan for SELECT * from table //执行计划(此处的表查询由于隐私,所以没拿出来) 第二步:select * from table(dbms_xplan.display)//查询分析 ...//查看某个表的索引情况 crea...
  • oracle 批量新建索引SQL

    2018-12-11 11:44:21
    UNIQUE:是唯一键索引,如果建非唯一键索引SQL语句去掉此关键词即可; table_name :表名; tablespace_name :表空间名 第一步了解新建一条索引的sql:CREATE UNIQUE INDEX 索引名 on 表名(想要创建索引的列名...
  • Oracle轻松取得建表和索引的DDL语句
  • Oracle数据库索引创建

    千次阅读 2018-09-12 19:00:18
    如果表数据和索引数据不需要分开  建表时直接指定主键索引  CREATE TABLE VOAMASTM (   "REFCODE" NUMBER(10) DEFAULT 0 NOT NULL ,   "OWNERREFCODE" NUMBER(10) DEFAULT 0 ,   "...
  • Oracle创建删除索引

    千次阅读 2019-05-06 10:27:44
    索引创建 create index index_name ontable(column_name1,column_name2); 创建唯一索引 create index unique index_name ontable(column_name1,column_name2); 索引的删除。 drop index index_name; ...
  • ORACLE索引所有SQL导出

    2014-12-29 14:23:29
    SELECT INDEX_NAME, table_name, dbms_lob.substr(dbms_metadata.get_ddl('INDEX', INDEX_NAME),4000) FROM DBA_INDEXES WHERE TABLESPACE_NAME = 'MAXIMO_INDEX'
  • 创建索引(如果字段为大写,请大写) CREATE INDEX index_p_exam_subject_id_name ON p_exam (SUBJECT_ID,EXAM_NAME); 删除索引drop index index_p_exam_subject_id_name;   创建唯一索引 CREATE UNIQUE INDEX...
  • oracle创建索引 查看索引状态

    千次阅读 2017-09-06 10:08:00
    Oracle对象教程:索引(Index)创建使用,索引:对数据库表中的某些列进行排序,便于提高查询效率。 当我们在某本书中查找特定的章节内容时,可以先从书的目录着手,找到该章节所在的页码,然后快速的定位到该页。这种...
  • 创建学员信息表--创建唯一索引--修改学员信息表添加主键和检查约束
  • oracle 用户 全部 索引 all index sql
  • Oracle索引创建和使用

    万次阅读 2016-09-07 13:38:39
    创建索引的作用 1、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 2、可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 3、可以加速表和表之间的连接,特别是在实现数据的参考完整性...
  • 教你创建Oracle复合索引(精)

    万次阅读 2018-11-13 20:43:39
    什么是复合索引? 复合索引顾名思义,区别于单列索引,是由两个或多个列一起构成的索引。其在B树上的数据结构是什么样?如下图,是一个包含两列的复合索引。...在实际开发中,我们经常会遇到创建表的情况。一...
  • BEGIN declare num1 int; select count(1) into num1 from user_ind_columns where index_name=('INDEX_M_ID'); if num =1 then dbms_output.PUT_LINE('索引存在');...这是我写的sql语句,求正确语句 应该怎么写哈
  • oracle 创建空间索引

    千次阅读 2017-09-06 10:39:52
    如果数据是从别人的库中导入进来,先前如果建有空间索引,则需要删除之后,建立自己的空间索引(否则容易报错),如果完全是自己的数据,或者之前并没有建立空间索引那就可以直接建立了。 首先进行查询,判断数据...
  • oracle 创建唯一索引

    万次阅读 2015-12-21 17:07:42
    我们在可以在创建表时或者创建好后通过修改表的方式来创建oracle中的unique约束。 下面是一些创建unique约束的例子: create table unique_test (id number, fname varchar2(20), lname varchar2(20), a
  • Oracle数据库常用sql语句

    千次阅读 2016-01-22 09:34:17
    ORACLE 常用的SQL语法和数据对象 一.数据控制语句 (DML) 部分   1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSERT INTO 表名(字段名1, 字段名...
  • ORACLE索引详解及SQL优化,详细描述了几种常用索引原理以及创建方法,解读索引生效条件,以及在开发中常用的提高数据库效率、降低数据库资源消耗的方法。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,968
精华内容 47,587
关键字:

oracle创建索引sql