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

    千次阅读 2020-10-31 14:11:27
    2、在已经存在的表创建索引 使用ALTER TABLE 语句创建索引 1.执行语句 alter table book add index BkName(bookname(30)) 2.show index 查看表中索引 show index from book 可以看到新增了一个索引 创建唯一索引: ...

    1、创建表的同时 指定

    create table t1(
    	id int not null,
    	name char(30) not null,
    	unique index UniqIdx(id)
    )
    

    2、在已经存在的表创建索引

    使用ALTER TABLE 语句创建索引

    1.执行语句

    alter table book add index BkName(bookname(30))
    

    2.show index 查看表中索引

    show index from book
    

    可以看到新增了一个索引

    创建唯一索引:

    alter table  book add index UniqiIdx(bookId)
    

    使用CREATE TABLE 语句创建索引

    创建普通索引:

    create index BkNameIdx on book(bookname)
    

    创建唯一索引:

    create unique index UniqIdx on book(bookId)
    

    删除索引

    使用ALTER TABLE 语句删除索引

    alter table  表名 drop index 索引名
    

    使用DROP INDEX 语句删除索引

    drop index 索引名 on 表名
    
    展开全文
  • elasticsearch5.5.1的javaapi,含创建索引、mapping、查询、增加删除文档
  • Oracle创建索引的基本规则

    千次阅读 2021-05-03 05:20:03
    创建索引的基本规则一、B-Tree索引1. 选择索引字段的原则:在WHERE子句中最频繁使用的字段联接语句中的联接字段选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很好)Oracle在UNIQUE和主键字段...

    创建索引的基本规则

    一、B-Tree索引

    1. 选择索引字段的原则:

    在WHERE子句中最频繁使用的字段

    联接语句中的联接字段

    选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很好)

    Oracle在UNIQUE和主键字段上自动建立索引

    在选择性很差的字段上建索引只有在这个字段的值分布非常倾斜的情况下才有益(在这种情况下,某一,两个字段值比其它字段值少出现很多)

    不要在很少独特值的字段上建B-TREE索引,在这种情况下,你可以考虑在这些字段上建位图索引.在联机事务处理环境下,并发性非常高,索引经常被修改,所以不应该建位图索引

    不要在经常被修改的字段上建索引.当有UPDATE,DELETE,INSETT操作时,ORACLE除了要更新表的数据外,同时也要更新索引,而且就象更新数据一样,或产生还原和重做条目

    不要在有用到函数的字段上建索引,ORACLE在这种情况,优化器不会用到索引,除非你建立函数索引

    可以考虑在外键字段上建索引,这些索引允许当在主表上UPDATE,DELETE操作时,不需要共享子表的锁,这非常适用于在父表和子表上有很多并发的INSERT,UPDATE和DELETE操作的情况

    当建立索引后,请比较一下索引后所获得的查询性能的提高和UPDATE,DELETE,INSERT操作性能上的损失,比较得失后,再最后决定是否需建立这个索引

    2. 选择建立复合索引

    复合索引的优点:

    改善选择性:复合索引比单个字段的索引更具选择性

    减少I/O:如果要查询的字段刚好全部包含在复合索引的字段里,则ORACLE只须访问索引,无须访问表

    什么情况下优化器会用到复合索引呢?

    (a) 当SQL语句的WHERE子句中有用到复合索引的领导字段时,ORACLE优化器会考虑用到复合索引来访问.

    (b)

    当某几个字段在SQL语句的WHERE子句中经常通过AND操作符联合在一起使用作为过滤谓词,并且这几个字段合在一起时选择性比各自单个字段的选择性要更好时,可

    能考虑用这几个字段来建立复合索引.

    (c) 当有几个查询语句都是查询同样的几个字段值时,则可以考虑在这几个字段上建立复合索引.

    复合索引字段排序的原则:

    确保在WHERE子句中使用到的字段是复合索引的领导字段

    如果某个字段在WHERE子句中最频繁使用,则在建立复合索引时,考虑把这个字段排在第一位(在CREATE INDEX语句中)

    如果所有的字段在WHERE子句中使用频率相同,则将最具选择性的字段排在最前面,将最不具选择性的字段排在最后面

    如果所有的字段在WHERE子句中使用频率相同,如果数据在物理上是按某一个字段排序的,则考虑将这个字段放在复合索引的第一位

    二、位图索引

    什么情况下位图索引能够改善查询的性能呢?

    WHERE子句包含多个谓词于中低基数的字段

    单个的谓词在这些中低基数的字段上选取大量的行

    已经有位图索引创建于某些或全部的这些中低基数的字段上

    被查询的表包含很多行

    可以在单一个表上建立多个位图索引,因此,位图索引能够改善包含冗长WHERE子句的复杂查询的性能,在合计查询和星形模型的联接查询语句中,位图索引也可以提供比较优良的性能

    位图索引与B-TREE索引的比较

    位图索引更节省空间

    位图索引比较适用于数据仓库环境,但不适于联机事务处理环境.在数据仓库环境,数据维护通常上通过批量INSERT和批量UPDATE来完成的,所以索引的维护被延迟直到DML操作结束.举例:当你批量插入1000行数据时,这些插入的行被放置到排序缓存中(SORT

    BUFFER),然后批处理更新这1000个索引条目,所以,每一个位图段在每一个DML操作中只需更新一次,即使在那个位图段里有多行被更新

    一个键值的压缩位图是由一个或多个位图段所组成,每一个位图段大约相当于半个BLOCK

    SIZE那么大,锁的最小粒度是一个位图段,在联机事务处理环境,如果多个事务执行同时的更新(即并发的更新),使用位图索引就会影响UPDATE,INSERT,DELETE性能了

    一个B-TREE索引的条目只包含一个ROWID,因此,当一个索引条目被锁定,即一行被锁定.但是对于位图索引,

    一个索引条目潜在地有可能包含一段ROWID(即某一个范围内的ROWID,有多个ROWID),当一个位图索引条目被锁定时,则这个条目包含的那一段ROWID都被锁定,从而影响并发性.当一个位图段内的ROWID的数量越多时,并发性就越差.虽然如此,对于BULK

    INSERT,UPDATE和DELETE,位图索引的性能还是比B-TREE索引要好.

    三、索引和NULL

    NULL值在索引中是被看做一个独特值的除非当一个索引的两行或多行的NON-NULL值是相等的情况下.在那种情况下,行被看做是相等的,因此,唯一索引不允许行包含空值以怕被看做是相等的.但是,当所有的行都是空值时,这个规则就不适用.Oracle并不索引所有健值都为NULL的表的行,除非是位图索引或当主键字段值是NULL时

    四、建立索引常用的规则如下

    表的主键、外键必须有索引;

    数据量超过300的表应该有索引;

    经常与其他表进行连接的表,在连接字段上应该建立索引;

    经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

    索引应该建在选择性高的字段上;

    索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

    复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

    A、正确选择复合索引中的主列字段,一般是选择性较好的字段;

    B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;

    C、如果复合索引中包含的字段经常单独出现在Where子句中,则为多个单字段索引;

    D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;

    E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

    频繁进行数据操作的表,不要建立太多的索引;

    删除无用的索引,避免对执行计划造成负面影响;

    以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。

    创建Oracle索引的7个注意事项

    在创建Oracle索引时,有一些问题使我们需要注意的,下面就为您介绍创建Oracle索引的一些注意事项,希望对您学习创建Oracle索引方面能有所帮助。

    1、一般来说,不需要为比较小的表创建索引;

    2、即使是大表,如果经常需要查询的数据不超过10%到15%的话,那就没有必要为其建立索引的必要。因为此时建立索引的开销可能要比性能的改善大的多。这个比例只是一个经验的数据。如果员需要得出一个比较精确的结论,那么就需要进行测试分析。

    3、如对于一些重复内容比较少的列,特别是对于那些定义了唯一约束的列。在这些列上建立索引,往往可以起到非常不错的效果。如对于一些null值的列与非Null值的列混合情况下,如果用户需要经常查询所有的非Null值记录的列,则最好为其设置索引。如果经常需要多表连接查询,在用与连接的列上设置索引可以达到事半功倍的效果。

    4、数据库管理员,需要隔一段时间,如一年,对的索引进行优化。该去掉的去掉,该调整的调整,以提高数据库的性能。

    5、通常来说,表的索引越多,其查询的速度也就越快。但是,表的更新速度则会降低。这主要是因为表的更新(如往表中插入记录)速度,反而随着索引的增加而增加。这主要是因为,在更新记录的同时需要更新相关的索引信息。为此,到底在表中创建多少索引合适,就需要在这个更新速度与查询速度之间取得一个均衡点。

    6、对于一些数据仓库或者决策型数据库系统,其主要用来进行查询。相关的记录往往是在数据库初始化的时候倒入。此时,设置的索引多一点,可以提高数据库的查询性能。同时因为记录不怎么更新,所以索引比较多的情况下,也不会影响到更新的速度。即使在起初的时候需要导入大量的数据,此时也可以先将索引禁用掉。等到数据导入完毕后,再启用索引。可以通过这种方式来减少索引对数据更新的影响。相反,如果那些表中经常需要更新记录,如一些事务型的应用系统,数据更新操作是家常便饭的事情。此时如果在一张表中建立过多的索引,则会影响到更新的速度。

    7、关于位图索引。

    基数是位图索引中的一个基本的定义,它是指数据库表中某个字段内容中不重复的数值。如在员工信息表中的性别字段,一般就只有男跟女两个值,所以,其基数为2;婚姻状况字段的话,则其只有已婚、未婚、离婚三种状态,其基数就为3;民族一览内也是只有有限的几个值。

    怎样建立最佳索引?

    1、明确地创建索引

    create index index_name on table_name(field_name)

    tablespace tablespace_name

    pctfree 5

    initrans 2

    maxtrans 255

    storage

    (

    minextents 1

    maxextents 16382

    pctincrease 0

    );

    2、创建基于函数的索引

    常用与UPPER、LOWER、TO_CHAR(date)等函数分类上,例:

    create index idx_func on emp(UPPER(ename)) tablespace

    tablespace_name;

    3、创建位图索引

    对基数较小,且基数相对稳定的列建立索引时,首先应该考虑位图索引,例:

    create bitmap index idx_bitm on class (classno) tablespace

    tablespace_name;

    4、明确地创建唯一索引

    可以用create unique index语句来创建唯一索引,例:

    create unique index dept_unique_idx on dept(dept_no) tablespace

    idx_1;

    5、创建与约束相关的索引

    可以用using index字句,为与unique和primary key约束相关的索引,例:

    alter table table_name

    add constraint PK_primary_keyname primary key(field_name)

    using index tablespace tablespace_name;

    如何创建局部区索引?

    1)基础表必须是分区表

    2)分区数量与基础表相同

    3)每个索引分区的子分区数量与相应的基础表分区相同

    4)基础表的自分区中的行的索引项,被存储在该索引的相应的自分区中,例如

    create index TG_CDR04_SERV_ID_IDX on TG_CDR04(SERV_ID)

    Pctfree 5

    Tablespace TBS_AK01_IDX

    Storage(

    MaxExtents 32768

    PctIncrease 0

    FreeLists 1

    FreeList Groups 1

    )

    local

    /

    如何创建范围分区的全局索引?

    基础表可以是全局表和分区表

    create index idx_start_date on tg_cdr01(start_date)

    global partition by range(start_date)

    (partition p01_idx vlaues less than ('0106')

    partition p01_idx vlaues less than ('0111')

    ...

    partition p01_idx vlaues less than ('0401'))

    /

    如何重建现存的索引?

    重建现存的索引的当前时刻不会影响查询

    重建索引可以删除额外的数据块

    提高索引查询效率

    alter index idx_name rebuild nologging;

    对于分区索引

    alter index idx_name rebuild partition partition_name

    nologging;

    删除索引的原因?

    1)不再需要的索引

    2)索引没有针对其相关的表所发布的查询提供所期望的性能改善

    3)应用没有用该索引来查询数据

    4)该索引无效,必须在重建之前删除该索引

    5)该索引已经变的太碎了,必须在重建之前删除该索引

    语句:

    drop index idx_name;

    drop index idx_name partition partition_name;

    建立索引的代价?

    基础表维护时,系统要同时维护索引,不合理的索引将严重影响系统资源,

    主要表现在CPU和I/O上。

    插入、更新、删除数据产生大量db file sequential read锁等待。

    展开全文
  • SQL Server 创建索引(index)

    千次阅读 多人点赞 2019-06-14 18:01:13
    索引的简介: create index 索引名称 on 表名称(字段名称) 索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书。 索引主要目的是...

    索引的简介:

    create index 索引名称 on 表名称(字段名称)

    索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书。

    索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 。

    但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。索引建少了,用 WHERE 子句找数据效率低,不利于查找数据。索引建多了,不利于新增、修改和删除等操作,因为做这些操作时,SQL SERVER 除了要更新数据表本身,还要连带立即更新所有的相关索引,而且过多的索引也会浪费硬盘空间。

     

    索引的分类:

    索引就类似于中文字典前面的目录,按照拼音或部首都可以很快的定位到所要查找的字。

    唯一索引(UNIQUE):每一行的索引值都是唯一的(创建了唯一约束,系统将自动创建唯一索引)

    主键索引:当创建表时指定的主键列,会自动创建主键索引,并且拥有唯一的特性。

    聚集索引(CLUSTERED):聚集索引就相当于使用字典的拼音查找,因为聚集索引存储记录是物理上连续存在的,即拼音 a 过了后面肯定是 b 一样。

    非聚集索引(NONCLUSTERED):非聚集索引就相当于使用字典的部首查找,非聚集索引是逻辑上的连续,物理存储并不连续。

    PS:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

     

    什么情况下使用索引:

    语法:

    CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name   
        ON <object> ( column_name [ ASC | DESC ] [ ,...n ] )   
        [ WITH <backward_compatible_index_option> [ ,...n ] ]  
        [ ON { filegroup_name | "default" } ]  
      
    <object> ::=  
    {  
        [ database_name. [ owner_name ] . | owner_name. ]   
        table_or_view_name  
    }  
      
    <backward_compatible_index_option> ::=  
    {   
        PAD_INDEX  
      | FILLFACTOR = fillfactor  
      | SORT_IN_TEMPDB  
      | IGNORE_DUP_KEY  
      | STATISTICS_NORECOMPUTE   
      | DROP_EXISTING   
    }

    参数:

    UNIQUE:为表或视图创建唯一索引。 唯一索引不允许两行具有相同的索引键值。 视图的聚集索引必须唯一。如果要建唯一索引的列有重复值,必须先删除重复值。

    CLUSTERED:表示指定创建的索引为聚集索引。创建索引时,键值的逻辑顺序决定表中对应行的物理顺序。 聚集索引的底层(或称叶级别)包含该表的实际数据行。

    NONCLUSTERED:表示指定创建的索引为非聚集索引。创建一个指定表的逻辑排序的索引。 对于非聚集索引,数据行的物理排序独立于索引排序。

    index_name:表示指定所创建的索引的名称。

    database_name:表示指定的数据库的名称。

    owner_name:表示指定所有者。

    table:表示指定创建索引的表的名称。

    view:表示指定创建索引的视图的名称。

    column:索引所基于的一列或多列。 指定两个或多个列名,可为指定列的组合值创建组合索引。

    [ ASC | DESC]:表示指定特定索引列的升序或降序排序方向。 默认值为 ASC。

    on filegroup_name:为指定文件组创建指定索引。 如果未指定位置且表或视图尚未分区,则索引将与基础表或视图使用相同的文件组。 该文件组必须已存在。

    on default:为默认文件组创建指定索引。

    PAD_INDEX = {ON |OFF }:指定是否索引填充。默认为 OFF。

      ON 通过指定的可用空间的百分比fillfactor应用于索引中间级别页。

      OFF 或 fillfactor 未指定,考虑到中间级页上的键集,将中间级页填充到接近其容量的程度,以留出足够的空间,使之至少能够容纳索引的最大的一行。

      PAD_INDEX 选项只有在指定了 FILLFACTOR 时才有用,因为 PAD_INDEX 使用由 FILLFACTOR 指定的百分比。

    FILLFACTOR = fillfactor:用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor 的值为1到100。

    SORT_IN_TEMPDB = {ON |OFF }:用于指定创建索引时的中间排序结果将存储在 tempdb 数据库中。 默认为 OFF。

      ON 用于生成索引的中间排序结果存储在tempdb。 这可能会降低仅当创建索引所需的时间tempdb位于不同的与用户数据库的磁盘集。 

      OFF 中间排序结果与索引存储在同一数据库中。

    IGNORE_DUP_KEY = {ON |OFF }:指定在插入操作尝试向唯一索引插入重复键值时的错误响应。默认为 OFF。

      ON 向唯一索引插入重复键值时将出现警告消息。 只有违反唯一性约束的行才会失败。

      OFF 向唯一索引插入重复键值时将出现错误消息。 整个 INSERT 操作将被回滚。

    STATISTICS_NORECOMPUTE = {ON |OFF}:用于指定过期的索引统计是否自动重新计算。 默认为 OFF。

      ON 不会自动重新计算过时的统计信息。

      OFF 启用统计信息自动更新功能。

    DROP_EXISTING = {ON |OFF }:表示如果这个索引还在表上就 drop 掉然后在 create 一个新的。 默认为 OFF。

      ON 指定要删除并重新生成现有索引,其必须具有相同名称作为参数 index_name。

      OFF 指定不删除和重新生成现有的索引。 如果指定的索引名称已经存在,SQL Server 将显示一个错误。

    ONLINE = {ON |OFF}:表示建立索引时是否允许正常访问,即是否对表进行锁定。默认为 OFF。

      ON 它将强制表对于一般的访问保持有效,并且不创建任何阻止用户使用索引和/表的锁。

      OFF 对索引操作将对表进行表锁,以便对表进行完全和有效的访问。

    例子:

    创建唯一聚集索引:

    -- 创建唯一聚集索引
    create unique clustered        --表示创建唯一聚集索引
    index UQ_Clu_StuNo        --索引名称
    on Student(S_StuNo)        --数据表名称(建立索引的列名)
    with 
    (
        pad_index=on,    --表示使用填充
        fillfactor=50,    --表示填充因子为50%
        ignore_dup_key=on,    --表示向唯一索引插入重复值会忽略重复值
        statistics_norecompute=off    --表示启用统计信息自动更新功能
    )

    创建唯一非聚集索引:

    -- 创建唯一非聚集索引
    create unique nonclustered        --表示创建唯一非聚集索引
    index UQ_NonClu_StuNo        --索引名称
    on Student(S_StuNo)        --数据表名称(建立索引的列名)
    with 
    (
        pad_index=on,    --表示使用填充
        fillfactor=50,    --表示填充因子为50%
        ignore_dup_key=on,    --表示向唯一索引插入重复值会忽略重复值
        statistics_norecompute=off    --表示启用统计信息自动更新功能
    )
    --创建聚集索引
    create clustered index Clu_Index
    on Student(S_StuNo)
    with (drop_existing=on)    
    
    --创建非聚集索引
    create nonclustered index NonClu_Index
    on Student(S_StuNo)
    with (drop_existing=on)    
    
    --创建唯一索引
    create unique index NonClu_Index
    on Student(S_StuNo)
    with (drop_existing=on)

    PS:当 create index 时,如果未指定 clustered 和 nonclustered,那么默认为 nonclustered。

    创建非聚集复合索引:

    --创建非聚集复合索引
    create nonclustered index Index_StuNo_SName
    on Student(S_StuNo,S_Name)
    with(drop_existing=on)
    --创建非聚集复合索引,未指定默认为非聚集索引
    create index Index_StuNo_SName
    on Student(S_StuNo,S_Name)
    with(drop_existing=on)

    在 CREATE INDEX 语句中使用 INCLUDE 子句,可以在创建索引时定义包含的非键列(即覆盖索引),其语法结构如下:

    CREATE NONCLUSTERED INDEX 索引名
    ON { 表名| 视图名 } ( 列名 [ ASC | DESC ] [ ,...n ] )
    INCLUDE (<列名1>, <列名2>, [,… n])
    
    
    --创建非聚集覆盖索引
    create nonclustered index NonClu_Index
    on Student(S_StuNo)
    include (S_Name,S_Height)
    with(drop_existing=on)
    
    --创建非聚集覆盖索引,未指定默认为非聚集索引
    create index NonClu_Index
    on Student(S_StuNo)
    include (S_Name,S_Height)
    with(drop_existing=on)

    PS:聚集索引不能创建包含非键列的索引。

    创建筛选索引:

    --创建非聚集筛选索引
    create nonclustered index Index_StuNo_SName
    on Student(S_StuNo)
    where S_StuNo >= 001 and S_StuNo <= 020
    with(drop_existing=on)
    
    --创建非聚集筛选索引,未指定默认为非聚集索引
    create index Index_StuNo_SName
    on Student(S_StuNo)
    where S_StuNo >= 001 and S_StuNo <= 020
    with(drop_existing=on)

    修改索引:

    --修改索引语法
    ALTER INDEX { 索引名| ALL }
    ON <表名|视图名>
    { REBUILD  | DISABLE  | REORGANIZE }[ ; ]

    REBUILD:表示指定重新生成索引。

    DISABLE:表示指定将索引标记为已禁用。

    REORGANIZE:表示指定将重新组织的索引叶级。

    --禁用名为 NonClu_Index 的索引
    alter index NonClu_Index on Student disable

    删除和查看索引:

    --查看指定表 Student 中的索引
    exec sp_helpindex Student    
    
    --删除指定表 Student 中名为 Index_StuNo_SName 的索引
    drop index Student.Index_StuNo_SName
    
    --检查表 Student 中索引 UQ_S_StuNo 的碎片信息
    dbcc showcontig(Student,UQ_S_StuNo)
    
    --整理 Test 数据库中表 Student 的索引 UQ_S_StuNo 的碎片
    dbcc indexdefrag(Test,Student,UQ_S_StuNo)
    
    --更新表 Student 中的全部索引的统计信息
    update statistics Student

    索引定义原则:

    避免对经常更新的表进行过多的索引,并且索引中的列尽可能少。而对经常用于查询的字段应该创建索引,但要避免添加不必要的字段。

    在条件表达式中经常用到的、不同值较多的列上建立索引,在不同值少的列上不要建立索引。

    在频繁进行排序或分组(即进行 GROUP BY 或 ORDER BY 操作)的列上建立索引,如果待排序的列有多个,可以在这些列上建立组合索引。

    在选择索引键时,尽可能采用小数据类型的列作为键以使每个索引页能容纳尽可能多的索引键和指针,通过这种方式,可使一个查询必需遍历的索引页面降低到最小,此外,尽可能的使用整数做为键值,因为整数的访问速度最快。

     

    来源: https://www.cnblogs.com/jett010/p/9071030.html

     

    其他资料:

    聚集索引和非聚集索引(转)

     

    展开全文
  • 0.创建hbase映射表: 映射表一定要和hbase中表的字段一一对应,首先pk是主键,也可以用rowkey来表示,剩下的就是各个列,不要忘了用“列族”.“具体列”这样的形式表示。 create table "device_data_test08" (...

    0.创建hbase映射表:

    映射表一定要和hbase中表的字段一一对应,首先pk是主键,也可以用rowkey来表示,剩下的就是各个列,不要忘了用“列族”.“具体列”这样的形式表示。

    create table "device_data_test08"
     ("pk" varchar primary key,"data"."deviceID" varchar,
    "data"."deviceTime" varchar,"data"."modelID" varchar,
    "data"."processState" varchar,"data"."subDevice" varchar,
    "data"."test08" varchar,"data"."abc1234567" varchar);

    1.创建索引:

    两个双引号,第一个是索引的名称,第二个是原表的名称

    这边的索引字段为:deviceID

    Include括号里面是包含要返回的列是哪些。

    CREATE INDEX "index_device_data_test08" ON 
    "device_data_test08"("data"."deviceID")
    INCLUDE
    ("data"."deviceTime","data"."modelID","data"."processState","data"."subDevice","data"."test08");

     2.删除索引

    drop index "index_device_data_test08" on "device_data_test08";

    3.重建索引

    ALTER INDEX IF EXISTS "idx_spc_test08" on "device_data_test08" REBUILD;

    有可能重建索引失败,失败的原因可能是表的数据量太大,或者生产环境中正在进行该表的操作。多尝试几次即可。如果还是失败,建议删除索引,然后重新创建索引。 

    展开全文
  • Mysql创建索引注意事项

    千次阅读 2020-03-08 08:40:39
    介绍了mysql索引相关的基础知识及索引自身搜索的规则和锁机制,并列了一些创建索引的一些优化策略或小tips...
  • 已经在上一篇文件讲述了springboot整合elasticsearch时,包括elasticsearch的搭建,springboot整合到elasticsearch。 文章地址:... 这里我将讲述springboot 整合elasticsearch 创建索引的方...
  • sql语句创建索引

    千次阅读 2021-04-02 00:37:27
    create index [index_mode] on [cn_name]([car_mode]); index_mode自定义索引名 cn_name表名 car_mode列名
  • 为数据表创建索引的目的是什么

    千次阅读 2021-01-29 18:21:30
    一、SQL创建索引的目的如下:1、通过唯一性索引(unique)可确保数据的唯一性;2、加快数据的检索速度;3、加快表之间的连接;4、减少分组和排序时间;5、使用优化隐藏器提高系统性能。二、创建SQL索引的语法:CREATE ...
  • ES如何创建索引

    千次阅读 2020-12-22 15:44:06
    2、创建索引【PUT方法】 索引的分片数和副本数为12和0 http://127.0.0.1:9200/demo_comment_message { "settings": { "number_of_shards": 12, "number_of_replicas": 0 }, "mappings": { "properties":...
  • MySQL索引篇,创建表时创建索引

    千次阅读 2021-01-27 02:34:24
    索引对于MySQL数据库查询速度具有无可取代的作用,一个合适的索引能给数据查询的效率带来巨大的提升,本文来给大家讲讲如何创建索引,索引的最佳创建方式是在建表的时候就确定好要索引的字段并建立好索引。...
  • MySQL 创建索引和索引效率验证

    千次阅读 2019-10-27 17:41:44
    MySQL 创建索引和索引效率验证 对于一张存储数据的表来说,通常来说数据量会很大。 项目中总会有一些表数据量非常大,并且在使用过程中,需要频繁地到这些表中查询数据。 数据量大的时候,查询速度会明显变慢,这...
  • Kibana ES创建索引命令

    千次阅读 2021-03-24 13:55:46
    创建索引 PUT 索引名 { "settings": { "index": { "number_of_shards": "3", "number_of_replicas": "0" } } } 设置索引mapping PUT 索引名/_doc/_mapping { "properties": { "id": { "type": "ke
  • elasticsearch创建索引和mapping

    千次阅读 2020-12-09 01:14:41
    1. 创建索引的同时指定特殊字段的类型 PUT /gunspoc { "mappings": { "doc":{ "properties":{ "name":{ "type":"keyword" }, "age":{ "type": "long" }, "address":{ "type":"text" }, "b
  • mysql 创建索引语句

    千次阅读 2020-11-19 19:00:03
    一、创建索引 1.PRIMARYKEY(主键索引) mysql > ALTERTABLE`table_name`ADDPRIMARYKEY (`column`) 2.UNIQUE(唯一索引) mysql > ALTERTABLE`table_name`ADDUNIQUE (`column` ) 3.INDEX(普通索引) mysql &...
  • oracle创建索引语句

    千次阅读 2020-06-30 21:46:51
    索引 create index 索引名称 on table(column) 删除索引 drop index 索引名称 复合索引 create index WBSINDEX ON project_info(wbs,is_delete) 查询某张表中所有索引 select * from ALL_INDEXS where table_...
  • 索引+索引的类型+创建索引

    千次阅读 2018-09-10 13:53:45
    索引  1在关系数据库中,索引是一种与表有关的数据库结构,它是除了表以外的另一个重要模式对象。  2索引建立在表的一列或多列上的辅助对象,目的是提高表中数据的访问速度.  3索引是表示数据的另一种方式,它提供...
  • } } /** * 创建索引库 */ @Test public void testCreateIndex(){ // 创建索引库,并制定实体类的字节码 elasticsearchTemplate.createIndex(Esneo.class); } /** * 创建映射 */ @Test public void ...
  • es创建索引和mapping

    千次阅读 2020-11-09 11:16:51
    1.创建索引 http://127.0.0.1:9200/ negative/ put 2、创建mapping 2.创建mapping http://127.0.0.1:9200/ negative/negative/_mapping post {"properties":{ "id": { "type": "long" }, "yjlb": { "type": ...
  • 如何在DATETIME字段的日期部分创建索引?mysql> SHOW COLUMNS FROM transactionlist;+-------------------+------------------+------+-----+---------+----------------+| Field | Type | Null | Key |...
  • 主键自动创建索引频繁作为查询条件的字段应该创建索引查询中与其他表关联的字段,外键关系建立索引查询中排序字段,排序字段需要建立索引(大大提高排序的速度)频繁更新字段不适合创建索引where条件里用不到的字段...
  • 创建索引的语法

    千次阅读 2018-09-28 19:59:08
    首先创建一个表:create table t1 (id int primary key,username varchar(20),password varchar(20)); 创建单个索引的语法:...例如:给id创建索引:CREATE INDEX t1_id on t1(id); 创建联合索引的语法:CREATE IN...
  • MySQL的索引类型及创建索引

    万次阅读 2019-03-05 14:04:27
    MySQL目前主要有以下几种索引类型: 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 二、语法 CREATE TABLE table_name[col_name data type] [unique|fulltext][index|key][index_name](col_name...
  • 索引的介绍 索引在MySQL中也叫做“键”,它是一个特殊的文件,它保存着数据表里所有记录的位置信息,更通俗的来说,数据库索引好比是一本书前面的目录,能加快数据库的...主键列会自动创建索引 索引的创建: -- ...
  • mysql创建索引方式

    千次阅读 2019-06-29 19:11:48
    在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引。 1.ALTER TABLE ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。 ALTER TABLE table_name ADD ...
  • MySQL有哪些索引,及如何创建索引

    千次阅读 2020-09-11 19:15:17
    MySQL索引有哪些,及如何创建索引? 1.了解索引 1、索引是什么?  在MySQL中,索引是一种增强式的存在,这表示即使没有索引,MySQL的功能并不会受到影响。索引是对数据库表中一列或多列的值进行排序的一种结构(B树)...
  • mongodb创建索引及索引优化效率案例

    千次阅读 2018-10-22 11:26:43
    语法: db.collection.createIndex...创建索引示例: 单键唯一索引:db.users. createIndex({username :1},{unique:true}); 单键唯一稀疏索引:db.users. createIndex({username :1},{unique:true,sparse:true});...
  • mysql创建索引三种方式

    千次阅读 多人点赞 2020-12-21 14:56:53
    1. 新建表中添加索引 ① 普通索引 create table t_dept( no int not null primary key, name varchar(20) null, sex varchar(2) null, info varchar(20) null, index index_no(no) ) ② 唯一索引 create ...
  • SQLServer之创建索引视图

    万次阅读 2018-10-25 16:00:54
    索引视图创建注意事项 对视图创建的第一个索引必须是唯一聚集索引。 创建唯一聚集索引后,可以创建更多非聚集索引。 为视图创建唯一聚集索引可以提高查询性能,因为视图在数据库中的存储方式与具有聚集索引的表的...
  • 创建索引sql 语句

    千次阅读 2020-04-21 12:38:11
    1、创建表的同时 指定 create table t1( id int not null, ...2、在已经存在的表创建索引 使用ALTER TABLE 语句创建索引 1.执行语句 alter table book add index BkName(bookname(30)) 2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,241,647
精华内容 496,658
关键字:

创建索引

友情链接: ShareFiles1.0.zip