精华内容
下载资源
问答
  • oracle 创建索引

    2013-08-02 16:21:42
    适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引。oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引 创建Oracle索引的标准语法: CREATE INDEX 索引名 ...

     

    要在Oracle数据库中使用索引,首先需要创建Oracle索引。下面就为您介绍创建Oracle索引的方法,希望对您能有所帮助。

    适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引。oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引

    创建Oracle索引的标准语法:

    CREATE INDEX 索引名 ON 表名 (列名)

    TABLESPACE 表空间名;

    创建唯一索引:

    CREATE unique INDEX 索引名 ON 表名 (列名)

    TABLESPACE 表空间名;

    创建组合索引:

    CREATE INDEX 索引名 ON 表名 (列名1,列名2)

    TABLESPACE 表空间名;

    创建反向键索引:

    CREATE INDEX 索引名 ON 表名 (列名) reverse

    TABLESPACE 表空间名;

    以上就是创建Oracle索引的方法介绍

    展开全文
  • mysql 创建索引

    千次阅读 2018-08-22 15:35:11
    可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。  explain关键字的使用方法很简单,就是把它放在select查询语句的前面。  mysql查看是否使用索引,简单的看type类型就可以。...

    MySQL的Explain关键字查看是否使用索引

    explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。

      explain关键字的使用方法很简单,就是把它放在select查询语句的前面。

      mysql查看是否使用索引,简单的看type类型就可以。如果它是all,那说明这条查询语句遍历了所有的行,并没有使用到索引。

     

      比如:explain select * from company_info where cname like '%小%'

    explain select * from company_info where cname like '小%'

     

    1)、id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询。
     
    2)、select_type列常见的有:
    A:simple:表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且只有一个
    B:primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary。且只有一个
    C:union:union连接的两个select查询,第一个查询是dervied派生表,除了第一个表外,第二个以后的表select_type都是union
    D:dependent union:与union一样,出现在union 或union all语句中,但是这个查询要受到外部查询的影响
    E:union result:包含union的结果集,在union和union all语句中,因为它不需要参与查询,所以id字段为null
    F:subquery:除了from字句中包含的子查询外,其他地方出现的子查询都可能是subquery
    G:dependent subquery:与dependent union类似,表示这个subquery的查询要受到外部表查询的影响
    H:derived:from字句中出现的子查询,也叫做派生表,其他数据库中可能叫做内联视图或嵌套select
     
    3)、table
    显示的查询表名,如果查询使用了别名,那么这里显示的是别名,如果不涉及对数据表的操作,那么这显示为null,如果显示为尖括号括起来的<derived N>就表示这个是临时表,后边的N就是执行计划中的id,表示结果来自于这个查询产生。如果是尖括号括起来的<union M,N>,与<derived N>类似,也是一个临时表,表示这个结果来自于union查询的id为M,N的结果集。
     
    4)、type
    依次从好到差:system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index,ALL,除了all之外,其他的type都可以使用到索引,除了index_merge之外,其他的type只可以用到一个索引
    A:system:表中只有一行数据或者是空表,且只能用于myisam和memory表。如果是Innodb引擎表,type列在这个情况通常都是all或者index
    B:const:使用唯一索引或者主键,返回记录一定是1行记录的等值where条件时,通常type是const。其他数据库也叫做唯一索引扫描
    C:eq_ref:出现在要连接过个表的查询计划中,驱动表只返回一行数据,且这行数据是第二个表的主键或者唯一索引,且必须为not null,唯一索引和主键是多列时,只有所有的列都用作比较时才会出现eq_ref
    D:ref:不像eq_ref那样要求连接顺序,也没有主键和唯一索引的要求,只要使用相等条件检索时就可能出现,常见与辅助索引的等值查找。或者多列主键、唯一索引中,使用第一个列之外的列作为等值查找也会出现,总之,返回数据不唯一的等值查找就可能出现。
    E:fulltext:全文索引检索,要注意,全文索引的优先级很高,若全文索引和普通索引同时存在时,mysql不管代价,优先选择使用全文索引
    F:ref_or_null:与ref方法类似,只是增加了null值的比较。实际用的不多。
    G:unique_subquery:用于where中的in形式子查询,子查询返回不重复值唯一值
    H:index_subquery:用于in形式子查询使用到了辅助索引或者in常数列表,子查询可能返回重复值,可以使用索引将子查询去重。
    I:range:索引范围扫描,常见于使用>,<,is null,between ,in ,like等运算符的查询中。
    J:index_merge:表示查询使用了两个以上的索引,最后取交集或者并集,常见and ,or的条件使用了不同的索引,官方排序这个在ref_or_null之后,但是实际上由于要读取所个索引,性能可能大部分时间都不如range
    K:index:索引全表扫描,把索引从头到尾扫一遍,常见于使用索引列就可以处理不需要读取数据文件的查询、可以使用索引排序或者分组的查询。
    L:all:这个就是全表扫描数据文件,然后再在server层进行过滤返回符合要求的记录。
     
    5)、possible_keys
    查询可能使用到的索引都会在这里列出来
     
    6)、key
    查询真正使用到的索引,select_type为index_merge时,这里可能出现两个以上的索引,其他的select_type这里只会出现一个。
     
    7)、key_len
    用于处理查询的索引长度,如果是单列索引,那就整个索引长度算进去,如果是多列索引,那么查询不一定都能使用到所有的列,具体使用到了多少个列的索引,这里就会计算进去,没有使用到的列,这里不会计算进去。留意下这个列的值,算一下你的多列索引总长度就知道有没有使用到所有的列了。要注意,mysql的ICP特性使用到的索引不会计入其中。另外,key_len只计算where条件用到的索引长度,而排序和分组就算用到了索引,也不会计算到key_len中。
     
    8)、ref
    如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段,如果是条件使用了表达式或者函数,或者条件列发生了内部隐式转换,这里可能显示为func
     
    9)、rows
    这里是执行计划中估算的扫描行数,不是精确值
     
    10)、extra
    这个列可以显示的信息非常多,有几十种,常用的有
    A:distinct:在select部分使用了distinc关键字
    B:no tables used:不带from字句的查询或者From dual查询
    C:使用not in()形式子查询或not exists运算符的连接查询,这种叫做反连接。即,一般连接查询是先查询内表,再查询外表,反连接就是先查询外表,再查询内表。
    D:using filesort:排序时无法使用到索引时,就会出现这个。常见于order by和group by语句中
    E:using index:查询时不需要回表查询,直接通过索引就可以获取查询的数据。
    F:using join buffer(block nested loop),using join buffer(batched key accss):5.6.x之后的版本优化关联查询的BNL,BKA特性。主要是减少内表的循环数量以及比较顺序地扫描查询。
    G:using sort_union,using_union,using intersect,using sort_intersection:
    using intersect:表示使用and的各个索引的条件时,该信息表示是从处理结果获取交集
    using union:表示使用or连接各个使用索引的条件时,该信息表示从处理结果获取并集
    using sort_union和using sort_intersection:与前面两个对应的类似,只是他们是出现在用and和or查询信息量大时,先查询主键,然后进行排序合并后,才能读取记录并返回。
    H:using temporary:表示使用了临时表存储中间结果。临时表可以是内存临时表和磁盘临时表,执行计划中看不出来,需要查看status变量,used_tmp_table,used_tmp_disk_table才能看出来。
    I:using where:表示存储引擎返回的记录并不是所有的都满足查询条件,需要在server层进行过滤。查询条件中分为限制条件和检查条件,5.6之前,存储引擎只能根据限制条件扫描数据并返回,然后server层根据检查条件进行过滤再返回真正符合查询的数据。5.6.x之后支持ICP特性,可以把检查条件也下推到存储引擎层,不符合检查条件和限制条件的数据,直接不读取,这样就大大减少了存储引擎扫描的记录数量。extra列显示using index condition
    J:firstmatch(tb_name):5.6.x开始引入的优化子查询的新特性之一,常见于where字句含有in()类型的子查询。如果内表的数据量比较大,就可能出现这个
    K:loosescan(m..n):5.6.x之后引入的优化子查询的新特性之一,在in()类型的子查询中,子查询返回的可能有重复记录时,就可能出现这个
     
    除了这些之外,还有很多查询数据字典库,执行计划过程中就发现不可能存在结果的一些提示信息
     
    11)、filtered
    使用explain extended时会出现这个列,5.7之后的版本默认就有这个字段,不需要使用explain extended了。这个字段表示存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的比例,注意是百分比,不是具体记录数。

    原文地址:https://www.cnblogs.com/acm-bingzi/p/mysqlExplain.html

    展开全文
  • 二、创建索引 三、管理索引(删除索引) 四、全文索引和目录 五、聚集索引和非聚集索引 一、索引概述 索引:是一个单独的、物理的数据库结构,它是某个表中一列或若干类的集合相应的指向表中物理标识这些值的...

    目录

    一、索引概述

    二、创建索引

    三、管理索引(删除索引)

    四、全文索引和目录

    五、聚集索引和非聚集索引


    一、索引概述

    索引:是一个单独的、物理的数据库结构,它是某个表中一列或若干类的集合相应的指向表中物理标识这些值的数据页的逻辑指针清单,索引是依赖于表建立的,它提供了数据库中编排表中数据的内部方法。一个表分为两部分组成,一部分用来存放表的数据页面,另一部分存放索引页面。

    使用索引的好处:

    1、保证数据记录的唯一性;

    2、加快数据检索速度;

    3、加快表与表间的连接速度;

    4、在使用ORDER BY和GROUP BY子句中进行检索数据时可以显著减少查询中分组和排序的时间;

    5、可以在检索数据的过程中使用优化隐藏器,提高系统性能。

     

    二、创建索引

    方法一:操作形式建立索引(如图1)

    方法二:用SQL语句创建索引(如图2)

    三、管理索引(删除索引)

    方法一:直接操作删除

    单击鼠标右键,选择删除命令执行删除。

     

    方法二:SQL语句进行删除

    四、全文索引和目录

    五、聚集索引和非聚集索引

    1、聚集索引:确定表中数据的物理顺序,这个就类似于电话薄,按姓氏排列数据,因此一个表中只能包含一个聚集索引。对于那些经常搜索范围值的 列特别有效。

    (1)含有大量非重复值的列

    (2)使用BETWEEN,<,>=,>或>=返回值的列

    (3)被连续访问的列

    (4)返回大型结果集的查询

    (5)经常被使用连接或GROUP BY子句的查询访问列

     

    2、非聚集索引:数据存储的位置与表的物理位置不同,索引带有指针指向数据的存储位置,索引中的项目按索引值的顺序存储,而表中的信息按照另一种顺序存储。

    聚集和非聚集的不同:

    (1)数据行不按照非聚集索引键的顺序排序和存储

    (2)非聚集索引的叶层不包含数据页,相反叶节点包含索引行。

     

     

     

    展开全文
  • oracle 创建索引和视图

    千次阅读 2018-07-15 14:37:27
    一: 创建索引有两种方式:   1. 自动添加(oracle 会为主键和唯一约束自动添加索引)  自动创建的索引是无法手动删除的,但是当删除主键约束,唯一约束时,对应的索引也会自动删除;   2. 手动添加  在...

     

    一:    创建索引有两种方式:

     

    1.    自动添加(oracle 会为主键和唯一约束自动添加索引)

           自动创建的索引是无法手动删除的,但是当删除主键约束,唯一约束时,对应的索引也会自动删除;

     

    2.    手动添加

           在查询时,经常被用作查询条件的字段应该被添加索引;

           添加索引:    CREATE  INDEX  ENAME_INDEX  ON  EMP  (ENAME);

           删除索引:    DROP  INDEX   ENAME_INDEX;

     

    二:  添加约束:

                     ALTER  TABLE  EMP  ADD  CONSTRANTS  ENAME_UNI  UNIQUE  (ENAME);

             删除约束:

                     ALTER  TABLE  EMP  DROP  CONSTRANTS  ENAME_UNI;

     

    观察查询处理结果需要启动追踪器进行浏览:

        切换sys账户: conn sys/change_on_install as sysdba;

        打开追踪器:set autotrace on;   

    默认情况下数据执行时采用全表扫描(逐行扫描),如果这样的查询采用全表扫描,如果数据量大的话执行速度一定是很慢的。如果有10000条数据,前5000条数据执行红包含满足条件的内容,后面的逐行扫描查询就是浪费时间

        解决问题:唯一可行的办法就是排序,那么对于在数据库里对于不查询的数据的排序,那么就是将其形成一棵树,这棵树的排列形式如下:取第一个数据作为根节点,而后比根节点小的数据放在左边,比根节点打的数据放在右边

    数据库之中对于索引的创建有两种形式:

        1.当数据列上使用了主键约束或唯一约束的时候自动创建索引;

         2.自己手工明确设置一个查询字段,手工创建索引;

         例: create index scott.emp_sal_ind on scott.emp(sal);

    注:索引并不能100%提高查询性能,索引实现的关键在于整个数据库之中索引树的维护,如果没有了这棵树,索引将无法使用,但是这颗树采用的是制定的索引字段才转换的树,但是如果字段上的内容频繁修改,那么久表示将有大量的内存和性能浪费在了这棵树的维护上,反而造成性能上的下降,所以建立索引的字段也要根据实际的情况有所调整

     

    三: 创建视图

            在实际之中数据表的查询都是比较复杂的,在一些传统的技术开发里面,视图的数量往往查过数据表的数量,但随着现在的一些开发(很难找到所谓的专业的数据库开发人员了),这样一来所有编写复杂查询的任务又回到程序员身上了,所以很多程序员为了代码的修改方便,都不再使用视图了。

            1.视图是存储在数据字典的一条select语句。通过创建视图可以提取数据的逻辑上的的集合和组合。
            视图分为:简单视图和复杂视图
                简单视图:只从单表中获取数据、不包含函数和数据组、可实现DML操作
                复杂视图:从多表中获取数据、包含函数和数据组、不能实现DML操作
                视图创建语句
                CREATE[OR REPLACE][FORCE|NOFORCE] VIEW view_name
               [(alias[,alias]...)]
                 AS subquery
               [WITH CHECK OPRION[CONSTRAINT constraint]] 
               [WITH READ ONLY]
               其中:
               OR REPLACE :若所创建的视图存在,ORACLE自动重建该视图;
               FORCE :不关基表是否存在ORACLE都会自动创建该视图;
               NOFORCE :只有基表都存在ORACLE才会创建该视图;
               alais :为视图产生的列定义的别名;
               subquery :一条完整的SELECT语句,可以在该语句中定义别名;
               WITH CHECK OPTION :插入或者修改的数据行必须满足视图的定义的约束;
               WITH READ ONY :该视图上不能进行任何DML操作;(只读)
               例如:
               CREATE OR REPLACE VIEW dept_sum_vm
               (name,minsal,maxsal,avgsal)
               AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)
               FROM emp e,dept d
               WHERE e.deptno=d.deptno
               GROUP BY d.dname;
             视图定义原则:
                1.视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询;
                2.在没有WITH CHECK OPTION和READ ONLY的情况下,查询中不能使用ORDER BY子句
                3.如果没有为CHECK OPTION约束命名,系统会自动为之命名,形式为SYS_Cn;
                4.OR REPLACE选项可以不删除原视图便可更改其定义并重建,或重新授权对象权限。

            2. 在scott用户下创建视图权限不足:

              使用sys登陆:CONN SYS/change_on_install AS SYSDBA;

              授权:GRANT CREATE VIEW TO SCOTT;

              切换回SCOTT: conn scott/tiger;

            3.  视图是一个查询的结果,并不表示真实的数据,所以理论上视图是不应该被修改的,但是默认情况下如果不进行任何的配置,视图的数据是可以被修改的(简单情况)

             方法一:创建视图时添加with check option,创建视图时作为查询条件的字段,如果作为修改时的条件,修改就会报错,但是其他字段仍能被修改

             方法二:with read only:将其配置为只读视图,对于视图的创建强烈建议都设为只读模式

                      
            4.视图修改:
            直接创建同名视图即可
            视图的删除:DROP VIEW VIEW_NAME
            删除视图的定义不影响基表中的数据。
            只有视图所有者和具备DROP VIEW权限的用户可以删除视图。
            视图被删除后,基于被删除视图的其他视图或应用将无效

     

     

     

           

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 创建索引 搜索相似图片
  • 关于对视图创建索引的一些问题

    千次阅读 2007-08-07 17:14:00
    今天晚上在网上找了一些关于对视图创建索引的文章,比较不错,发上来:第一篇 聚集索引与非聚集索引索引是在数据库表或者视图上创建的对象,目的是为了加快对表或视图的查询的速度按照存储方式分为:聚集与非聚集...
  • 索引创建方式

    千次阅读 2018-07-03 19:34:22
    oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引创建索引:CREATE [unique] INDEX index_name ON table (column)unique --唯一索引index_name --索引名称table --表名column (列.....
  • 索引,视图,存储过程,函数 ...实现方式有:前缀索引,全文本索引,空间列类创建索引。暂时不支持函数索引。 语法:创建:create [unique/fulltext]index __ on _表名_ ( _ 列名_ ) ;  删除:dro
  • ElasticSearch也用了一段时间,索引建立好后,基本就很少去用表达式操作它了,目前一直都是直接用Java代码去进行ES的增删改查,今天突然需要用到索引
  • MySQL索引创建及使用

    万次阅读 多人点赞 2019-03-12 17:56:59
    背景 最近在深化学习数据库相关知识,借此机会总结记录一番,本来想自己总结概括一下,但是看到一...关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL...
  • 常见的空间索引方法

    万次阅读 多人点赞 2018-05-21 15:51:17
    在谈论空间索引之前,我们必须了解索引的概念。索引是为了提高数据集的检索效率。打个比喻,一本书的目录就是这本书的内容的“索引”,我们查看感兴趣的内容前,通过查看书的目录去快速查找对应的内容,而不是...
  • 数据库索引 建立方法

    千次阅读 2016-04-20 15:08:18
    数据库索引是将数据库表中的某一列或几列以特定的数据结构存起来,比如B-Tree,Hash等,这样查找的时候就可以不用从头插到尾要O(n),这样可以缩短到O(log)级别甚至O(1)。 建立索引之后查找和修改,排序等操作可以省...
  • SAS创建和使用索引(SAS INDEX)

    千次阅读 2019-07-05 20:54:56
    一、概述 在合并数据集的时候,可以使用DATA步,但使用DATA 步时需要对KEY VALUE 排序,且KEY VALUE 的名字也必须一致; 也可以用PROC SQL ,不需要进行上述排序、重命名的步骤。...INDEX 分为简单索引和复杂...
  • Oracle数据库索引创建

    千次阅读 2018-09-12 19:00:18
    如果表数据和索引数据不需要分开  建表时直接指定主键索引  CREATE TABLE VOAMASTM (   "REFCODE" NUMBER(10) DEFAULT 0 NOT NULL ,   "OWNERREFCODE" NUMBER(10) DEFAULT 0 ,   "...
  •  关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就...
  • InnoDB索引

    万次阅读 2019-08-05 16:30:09
    1.概述 InnoDB存储引擎支持一下几种索引 B+ 树索引 全文索引 哈希索引 2.B+ 树索引 ...B+树索引可以分为聚集索引(clustered inex)和辅助索引(secondary),其内部全是B+树结构,高度平衡。...
  • MySQL索引使用方法和性能优化

    千次阅读 2013-11-25 09:30:49
    关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能...
  • mysql索引

    千次阅读 2019-08-18 10:33:10
    一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本 500 页的书,如果想快速找到其中的某一个知识点,在不借助目录的...可以用于提高读写效率的数据结构很多,这里我先给你介绍三种...
  • 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能...
  • mysql索引详解

    万次阅读 多人点赞 2021-07-07 21:40:09
    分别为:表定义文件、数据文件、索引文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。 InnoDB:所有的表都...
  • 在kibana上面创建索引点击创建时,一直显示下面的页面 就看到不停的在那转,始终创建不成功。 查看后台日志,看到状态码为403,报了如下的错误 由于我用的是es6版本,所以怀疑是.kibana没有写入权限 我尝试修改...
  • 为mysql数据库建立索引;mysql索引总结----mysql 索引类型以及创建;mysql_建立索引的优缺点
  • 标签 PostgreSQL , CONCURRENTLY index , ...PostgreSQL支持在线创建索引(CREATE INDEX CONCURRENTLY),不堵塞其他会话对被创建索引表的DML(INSERT,UPDATE,DELETE)操作。特别适合于在线业务。 注意,传统...
  • 索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。如:返回某范围内的数据一项。比如您的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 175,373
精华内容 70,149
关键字:

创建索引的方法可以分为