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

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

    创建Oracle索引的标准语法:

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

    TABLESPACE 表空间名;

    创建唯一索引:

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

    TABLESPACE 表空间名;

    创建组合索引:

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

    TABLESPACE 表空间名;

    创建反向键索引:

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

    TABLESPACE 表空间名;

    以上就是创建Oracle索引的方法介绍。
    展开全文
  • 第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。  第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。    创建方法分为两种:分别是语句创建和webui形式创建 ...

    为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能。 
    第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 
    第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。 
    第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 

     

    创建方法分为两种:分别是语句创建和webui形式创建

    常用的两种索引创建方式:

    (1)CREATE INDEX index_name ON table_1(filed_1);

    (2)ALTER TABLE table_1 ADD INDEX(field_1);

    区别

    1.使用CREATE创建索引必须提供索引名称,而ALTER方式可以不提供则MySQL会自动为你创建索引名称,如果想使用ALTER方式自定义创建索引名称,可以类似如下SQL语句:

    1.mysql> ALTER TABLE table_1 ADD INDEX index_name(field_1,field_2);

    2.CREATE 方式创建索引,一次只能创建一个索引。ALTER方式可以一次创建多个索引,类似如下SQL语句:

    mysql> ALTER TABLE table_1 ADD PRIMARY KEY(id), ADD INDEX index_name_1(field_1,field_2), ADD IND

     

     web ui client 创建

     

    里面有个设计表,就可以建立索引了

    展开全文
  • oracle 创建索引

    2013-08-02 16:21:42
    下面就为您介绍创建Oracle索引的方法,希望对您能有所帮助。 适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引。oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于...

     

    要在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索引的方法介绍

    展开全文
  • oracle 五种索引创建

    2012-03-13 14:57:28
    下面就为您介绍创建Oracle索引的方法,希望对您能有所帮助。 适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引。oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于...

     http://database.51cto.com/art/201010/231388.htm

    要在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索引的方法介绍。

     

    ===

    http://database.51cto.com/art/201010/231096.htm

    使用Oracle函数索引,无疑是提高查询效率的有效方法之一。下面就为您详细介绍Oracle函数索引的使用方法,希望对您能有所帮助。

    谈到任何对列的操作都可能导致全表扫描,例如:

    1. select * from emp where substr(ename,1,2)=’SM’; 

    但是这种查询在客服系统又经常使用,我们可以创建一个带有substr函数的基于Oracle函数索引,

    1. create index emp_ename_substr on eemp ( substr(ename,1,2) ); 

    但是这种查询在客服系统又经常使用,我们可以创建一个带有substr函数的Oracle函数索引,

    1. create index emp_ename_substr on eemp ( substr(ename,1,2) ); 

    这样在执行上面的查询语句时,这个基于函数的索引将排上用场,执行计划将是(INDEX RANGE SCAN)。
    上面的例子中,我们创建了基于函数的索引,但是如果执行下面的查询:

    1. select * from emp where substr(ename,1,1)=’S’ 

    得到的执行计划将还是(TABLE ACCESS FULL),因为只有当数据列能够等式匹配时,基于函数的索引才能生效,这样对于这种索引的计划和维护的要求都很高。请注意,向表中添加索引是非常危险的操作,因为这将导致许多查询执行计划的变更。然而,如果我们使用基于函数的索引就不会产生这样的问题,因为Oracle只有在查询使用了匹配的内置函数时才会使用这种类型的索引。

    ===

    http://space.itpub.net/21805468/viewspace-618068

    oracle之位图索引

    上一篇 / 下一篇  2009-11-03 23:09:11 / 个人分类:oracle

    位图索引适用于低基数(low-cardinality)列,所谓低基数列就是指这个列只有很少的可取值。

    位图索引的问题:
    采用位图索引,一个键指向多行,可能数以百计甚至更多。如果更新一个位图索引键,那么这
    个键指向的数百条记录会与你实际更新的那一行一同被有效地锁定。

    位图索引的适用场景:
    位图索引是针对那些值不经常改变的字段的,在实际应用中,如果某个字段的值需要频繁更新,
    那么就不适合在它上面创建位图索引。

    以下为针对位图索引的实验:
    1.准备环节:
    --创建一个表t
    SQL> create table t(processed_flag varchar2(1));

    表已创建。

    --在表t的processed_flag创建一个位图索引
    SQL> create bitmap index t_idx on t(processed_flag);

    索引已创建。

    2.在一个sql*plus会话中插入一行列值为N的记录,且先不commit;然后在另一个sql*plus会话中也
    插入一行列值为N的记录,这时发现后面的会话会被阻塞。
    --session1
    SQL> insert into t values('N');

    已创建 1 行。
    insert后不提交,则位图索引中的N键被锁住,任何DML语句只要与N有关都被阻塞

    --session2
    SQL> insert into t values('N');
    该语句被挂起

    --查询lock情况
    这里有两个锁是正常的,因为任何DML操作都会产生锁,因为两个DML现在都没有commit,所以都会持有锁。
    关键是看两个session的等待事件。可以看到前面的sid=146等待的是SQL*Net message from client,实际是
    处于空闲等待,而sid=147等待的是enq: TX - row lock contention,其实是在等待sid=146释放其持有的锁
    两个session持有的锁都为3-SX(Row-X)行级排它锁。
    select t2.username,
           t3.owner,
           t3.object_name,
           t2.machine,
           t2.sid as sid,
           t2.serial#,
           t2.LAST_CALL_ET,
           t2.program,
           t1.locked_mode
      from v$locked_object t1, v$session t2, dba_objects t3
     where t1.session_id = t2.sid
       and t1.OBJECT_ID = t3.object_id
     order by t2.logon_time;
     
    USERNAME OWNER    OBJE MACHINE                         SID    SERIAL# LAST_CALL_ET PROGRAM    LOCKED_MODE
    -------- -------- ---- ------------------------------ ---- ---------- ------------ -------------- ------------
    SCOTT    SCOTT    T    WORKGROUP\PC-200904261625       146          5          897 sqlplus.exe  3
    SCOTT    SCOTT    T    WORKGROUP\PC-200904261625       147         12          894 sqlplus.exe  3

    已选择2行。


    --列出指定 ID 的等待事件
    可见前面的session sid=146在等待客户端输入,实际上就是等待commit命令,而sid=147则是在等待enq: TX - row lock contention
    select SID,EVENT from v$session_wait where sid=147;

    SQL> select SID,EVENT from v$session_wait where sid=147;

     SID EVENT
    ---- ----------------------------------------------------------------
     147 enq: TX - row lock contention

    已选择 1 行。

    SQL> select SID,EVENT from v$session_wait where sid=146;

     SID EVENT
    ---- ----------------------------------------------------------------
     146 SQL*Net message from client

    已选择 1 行。

    --查看当前被锁的 session 正在执行的 sql 语句
    select  /*+  NO_MERGE(a)  NO_MERGE(b)  NO_MERGE(c)  */  a.username,  a.machine,  a.sid,
    a.serial#, a.last_call_et "Seconds", b.id1, c.sql_text "SQL"
    from v$session a, v$lock b, v$sqltext c
    where a.username is not null and a.lockwait = b.kaddr and c.hash_value =a.sql_hash_value

    USERNAME MACHINE                         SID    SERIAL#    Seconds        ID1 SQL
    -------- ------------------------------ ---- ---------- ---------- ---------- ----------------------
    SCOTT    WORKGROUP\PC-200904261625       147         12       3006     327724 insert into t values('N')

    --session1 commit后,session2不再等待
    SQL> insert into t values('N');

    已创建 1 行。


    3.在一个sql*plus会话中插入一行列值为N的记录,且先不commit;然后在另一个sql*plus会话中
    插入一行列值为Y的记录,这时发现二者互不影响。
    --session1
    SQL> insert into t values('N');

    已创建 1 行。
    insert后不commit

    --session2
    SQL> insert into t values('Y');

    已创建 1 行。
    insert后不commit

    --查看lockqingk
    可见两个session都持有锁,那么二者的等待事件是什么呢
    select t2.username,
           t3.owner,
           t3.object_name,
           t2.machine,
           t2.sid as sid,
           t2.serial#,
           t2.LAST_CALL_ET,
           t2.program
      from v$locked_object t1, v$session t2, dba_objects t3
     where t1.session_id = t2.sid
       and t1.OBJECT_ID = t3.object_id
     order by t2.logon_time;
     
    USERNAME OWNER    OBJE MACHINE                         SID    SERIAL# LAST_CALL_ET PROGRAM
    -------- -------- ---- ------------------------------ ---- ---------- ------------ --------------
    SCOTT    SCOTT    T    WORKGROUP\PC-200904261625       147         12          114 sqlplus.exe
    SCOTT    SCOTT    T    WORKGROUP\PC-200904261625       146         23          108 sqlplus.exe

    已选择2行。

    --查看等待事件
    可见两个session都处于空闲等待
    SQL> select SID,EVENT from v$session_wait where sid=146;

     SID EVENT
    ---- ----------------------------------------------------------------
     146 SQL*Net message from client

    已选择 1 行。

    SQL> select SID,EVENT from v$session_wait where sid=147;

     SID EVENT
    ---- ----------------------------------------------------------------
     147 SQL*Net message from client

    已选择 1 行。


     

     

    展开全文
  • 我们生活中数据通常可以分为两类: **结构化数据:**有固定格式和固定长度。例如成绩单、工资条、花名册等等。 **非结构化数据:**无固定格式,无固定长度。例如邮件、会议纪要、通知书等等。非结构化数据也叫全文...
  • mongo使用场景 最近做敏感词,把检测到敏感词语句中敏感词替换为*存入mongo中,语句类型用type区分,分为评价...在python代码中可以非常方便对mongodb添加索引,本文提供两种方法。 第一种是我自己用联合索引...
  • Oracle中视图的创建和处理方法 图是基于一个表或多个表或视图逻辑...视图基于表称为基表,Oracle数据库对象分为五种:表,视图,序列,索引和同义词。 视图是存储在数据字典里一条select语句。通过创建视...
  • SQL Server 2000索引重构方法

    千次阅读 2011-06-06 15:34:00
    索引可以分为簇索引和非簇索引,簇索引通过重排表中数据来提高数据访问速度,而非簇索引则通过维护表中数据指针来提高数据索引。在数据库中创建索引时,查询所使用索引信息存储在索引页中。连续索引页由从...
  • mongodb索引

    2019-05-31 16:43:00
    mongodb的索引 一,索引分为:单字段索引,复合索引,多key索引,文档索引等等 1,单字段索引(Single Filed Index)  命令:db.person.createIndex( {age: 1} ) ... createIndex:创建索引的方法,  age...
  • 索引是对数据库大数据的...复合索引的创建方法与创建单一索引的方法完全一样。但复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引。而且在表的行数远远大于索引键的数目时,使用这种方式可以明显加快...
  • 关于 Mysql innodb的索引

    2016-05-13 08:55:13
    以主键为key,如果表中没有主键,则会选择一个有唯一索引的列作为key,如果都没有,innodb会为我们创建一个唯一列作为key。所有的数据都存在叶子节点上,并且是按顺序存储的。如果我们的主键插入的数据都是随机的,...
  • 关于sql索引的见解

    2017-05-09 09:31:09
     非聚集索引可以简单理解为有序目录,是一种以空间换取时间的方法。举个例子,在一个user表中,有一个id_num,即身份号,此不为主键id,那么这些数据在存储的时候都是无序的,比如  id为1的id_num为10
  • 1、别名 Elasticsearch中的别名,可以分为索引别名、过滤器... 过滤器别名提供了一种创建同一索引的不同“视图”的简便方法,可以使用Query DSL定义过滤器,并使用此别名将其应用于所有“搜索”,“计数”,“按...
  • mysql数据库索引

    2020-03-27 23:07:20
    @MYSQL索引 索引的应用场景 索引的应用 为一张表添加索引可以支持其查询时夹带索引字段达到快速...索引的类型分为三种: 1.普通索引: 最基本的索引,它没有任何限制,用于加速查询。 创建方法: a. 建表的时候...
  • sql索引见解

    2017-09-20 14:33:46
     非聚集索引可以简单理解为有序目录,是一种以空间换取时间的方法。举个例子,在一个user表中,有一个id_num,即身份号,此不为主键id,那么这些数据在存储的时候都是无序的,比如  id为1的id_nu

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 166
精华内容 66
关键字:

创建索引的方法可以分为