精华内容
下载资源
问答
  • MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样。其实可以这样说说,索引是凌驾于数据存储系统之上的另一层系统,所以...
  • 使用SQL创建唯一索引

    千次阅读 2019-04-27 08:10:00
    使用sql语句创建唯一索引,格式如下: create unique index 索引名 on 表名(列名1,列名2……) 示例;在表GoodsMade_Labour的SID列上创建唯一索引IX_GoodsMade_Labour,代码如下: create unique index IX_...
    复制代码
    使用sql语句创建唯一索引,格式如下:
    create unique index 索引名 on 表名(列名1,列名2……)
    
    示例;在表GoodsMade_Labour的SID列上创建唯一索引IX_GoodsMade_Labour,代码如下:
    create unique index IX_GoodsMade_Labour on GoodsMade_Labour(SID)
    
    这样情况下创建的是非聚集索引,它和使用nonclustered关键效果是一样的。
    create unique nonclustered index IX_GoodsMade_Labour on GoodsMade_Labour(SID)
    
    如果要创建聚集索引,可使用关键字clustered,代码如下:
    create unique clustered index IX_GoodsMade_Labour on GoodsMade_Labour(SID)
    复制代码

     

     

    其他几种常用索引的添加方法

    复制代码
    1.添加PRIMARY KEY(主键索引) 
    mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 
    2.添加UNIQUE(唯一索引) mysql>ALTER TABLE `table_name` ADD UNIQUE ( `column` )
    3.添加INDEX(普通索引) mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
    4.添加FULLTEXT(全文索引) mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
    5.添加多列索引 mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

    复制代码

     

    转载于:https://www.cnblogs.com/xinzhyu/p/10777562.html

    展开全文
  • 创建 唯一索引和非唯一索引

    千次阅读 2018-05-10 18:51:16
    2017年09月16日 13:03:10阅读数:2718 步骤如下:一、创建唯一索引:1、打开navicat premium ,打开准备创建索引的数据库的查询编辑器;2、输入命令:CREATE UNIQUE INDEX 索引名 on 表名(想要创建索引的列名) ...
    
    

    步骤如下:

    一、创建唯一索引:

    1、打开navicat premium ,打开准备创建索引的数据库的查询编辑器;

    2、输入命令:CREATE UNIQUE INDEX  索引名 on 表名(想要创建索引的列名) TABLESPACE 表空间名;

    CREATE UNIQUE INDEX gcsj0917 ON VEH_PASSREC_08200916 (GCSJ) TABLESPACE USERS

    如果不知道表空间名怎么查,见3;

    3、查询表空间名、文件ID、字节大小、文件名 

    selecttablespace_name,file_id,bytes/1024/1024,file_name  from dba_data_files order by file_id;


    二、创建非唯一索引:

    1、将unique去掉即可

    CREATE INDEX 索引名 on 表名(列名 DESC)

    展开全文
  • MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样。其实可以这样说说,索引是凌驾于数据存储系统之上的另一层系统,所以...

    一、索引

    MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样。其实可以这样说说,索引是凌驾于数据存储系统之上的另一层系统,所以各种结构迥异的存储都有相同或相似的索引实现及使用接口并不足为 奇。

    1.基础索引

    在字段age 上创建索引,1(升序);-1(降序):

    db.users.ensureIndex({age:1})

    _id 是创建表的时候自动创建的索引,此索引是不能够删除的。当系统已有大量数据时,创建索引就是个非常耗时的活,我们可以在后台执行,只需指定“backgroud:true”即可。

    db.t3.ensureIndex({age:1} , {backgroud:true})

    2.文档索引

    索引可以任何类型的字段,甚至文档:

    db.factories.insert( { name: "wwl", addr: { city: "Beijing", state: "BJ" } } );

    //在addr 列上创建索引

    db.factories.ensureIndex( { addr : 1 } );

    //下面这个查询将会用到我们刚刚建立的索引

    db.factories.find( { addr: { city: "Beijing", state: "BJ" } } );

    //但是下面这个查询将不会用到索引,因为查询的顺序跟索引建立的顺序不一样

    db.factories.find( { addr: { state: "BJ" , city: "Beijing"} } );

    3. 组合索引

    跟其它数据库产品一样,MongoDB 也是有组合索引的,下面我们将在addr.city 和addr.state上建立组合索引。当创建组合索引时,字段后面的1 表示升序,-1 表示降序,是用1 还是用-1 主要是跟排序的时候或指定范围内查询 的时候有关的。

    db.factories.ensureIndex( { "addr.city" : 1, "addr.state" : 1 } );

    // 下面的查询都用到了这个索引

    db.factories.find( { "addr.city" : "Beijing", "addr.state" : "BJ" } );
    
    db.factories.find( { "addr.city" : "Beijing" } );
    
    db.factories.find().sort( { "addr.city" : 1, "addr.state" : 1 } );
    
    db.factories.find().sort( { "addr.city" : 1 } );

    4. 唯一索引

    只需在ensureIndex 命令中指定”unique:true”即可创建唯一索引。例如,往表t4 中插入2 条记录时候报错。

    db.t4.ensureIndex({firstname: 1, lastname: 1}, {unique: true});

    5.强制使用索引

    hint 命令可以强制使用某个索引。

    db.t5.find({age:{$lt:30}}).hint({name:1, age:1}).explain()

    6.删除索引

    //删除t3 表中的所有索引

    db.t3.dropIndexes()

    //删除t4 表中的firstname 索引

    db.t4.dropIndex({firstname: 1})

    二、explain执行计划

    MongoDB 提供了一个 explain 命令让我们获知系统如何处理查询请求。利用 explain 命令,我们可以很好地观察系统如何使用索引来加快检索,同时可以针对性优化索引。

    db.t5.ensureIndex({name:1})
    
     db.t5.ensureIndex({age:1})
    
     db.t5.find({age:{$gt:45}}, {name:1}).explain()
    
     {
    
       "cursor" : "BtreeCursor age_1",
    
       "nscanned" : 0,
    
       "nscannedObjects" : 0,
    
       "n" : 0,
    
       "millis" : 0,
    
       "nYields" : 0,
    
       "nChunkSkips" : 0,
    
       "isMultiKey" : false,
    
       "indexOnly" : false,
    
       "indexBounds" : {
    
       "age" : [
    
              [45,1.7976931348623157e+308]
    
            ]
    
        }
    
    }
    

    字段说明:

    cursor: 返回游标类型(BasicCursor 或 BtreeCursor)

    nscanned: 被扫描的文档数量

    n: 返回的文档数量

    millis: 耗时(毫秒)

    indexBounds: 所使用的索引

    三、优化器profile

    在MySQL 中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB 中是否有类似的功能呢?答案是肯定的,那就是MongoDB Database Profiler。

    1.开启profiling功能

    有两种方式可以控制 Profiling 的开关和级别,第一种是直接在启动参数里直接进行设置。启动MongoDB 时加上–profile=级别 即可。也可以在客户端调用db.setProfilingLevel(级别) 命令来实时配置,Profiler 信息保存在system.profile 中。我们可以通过db.getProfilingLevel()命令来获取当前的Profile 级别,类似如下操作:

    db.setProfilingLevel(2);

    上面profile 的级别可以取0,1,2 三个值,他们表示的意义如下:

    0 – 不开启

    1 – 记录慢命令 (默认为>100ms)

    2 – 记录所有命令

    Profile 记录在级别1 时会记录慢命令,那么这个慢的定义是什么?上面我们说到其默认为100ms,当然有默认就有设置,其设置方法和级别一样有两种,一种是通过添加 –slowms 启动参数配置。第二种是调用db.setProfilingLevel 时加上第二个参数:

    db.setProfilingLevel( level , slowms )
    
    db.setProfilingLevel( 1 , 10 );
    

    2.查询 Profiling 记录

    与MySQL 的慢查询日志不同,MongoDB Profile 记录是直接存在系统db 里的,记录位置system.profile ,所以,我们只要查询这个Collection 的记录就可以获取到我们的 Profile 记录了。列出执行时间长于某一限度(5ms)的 Profile 记录:

    db.system.profile.find( { millis : { $gt : 5 } } )

    MongoDB Shell 还提供了一个比较简洁的命令show profile,可列出最近5 条执行时间超过1ms 的 Profile 记录。

    四、常用性能优化方案

    创建索引

    限定返回结果数

    只查询使用到的字段

    采用capped collection

    采用Server Side Code Execution

    使用Hint,强制使用索引

    采用Profiling

    五、性能监控工具

    1. mongosniff

    此工具可以从底层监控到底有哪些命令发送给了MongoDB 去执行,从中就可以进行分析:以root 身份执行:

    $./mongosniff --source NET lo

    然后其会监控位到本地以localhost 监听默认27017 端口的MongoDB 的所有包请求。

    2.Mongostat

    此工具可以快速的查看某组运行中的MongoDB 实例的统计信息 字段说明:

    insert: 每秒插入量

    query: 每秒查询量

    update: 每秒更新量

    delete: 每秒删除量

    locked: 锁定量

    qr | qw: 客户端查询排队长度(读|写)

    ar | aw: 活跃客户端量(读|写)

    conn: 连接数

    time: 当前时间

    它每秒钟刷新一次状态值,提供良好的可读性,通过这些参数可以观察到一个整体的性能情况。

    3. db.serverStatus

    这个命令是最常用也是最基础的查看实例运行状态的命令之一。

    4.db.stats

    db.stats 查看数据库状态信息。

    展开全文
  • mysql 索引-【创建索引命令

    千次阅读 2018-08-10 09:48:45
    上篇讲述了一下mysql索引的应用,本篇则主要针对索引命令进行一下总结,依旧拿employees为例说明。 首先要知道索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引。MyISAM和InnoDB存储引擎:只...

    上篇讲述了一下mysql索引的应用,本篇则主要针对索引命令进行一下总结,依旧拿employees为例说明。
    首先要知道索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引。MyISAM和InnoDB存储引擎:只支持BTREE索引,也就是说默认使用BTREE,不能够更换。MEMORY/HEAP存储引擎:支持HASH和BTREE索引。

    主键索引、唯一索引:

    主键和主键索引:

    1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。
    2. 一个表中可以有多个唯一性索引,但只能有一个主键。
    3. 主键列不允许空值,而唯一性索引列允许空值。
    4. 索引可以提高查询的速度。

      创建主键索引:

    //为emp_no创建主键索引
    alter table employees add primary KEY(emp_no);

    创建唯一索引:

    //为test表中的seller_id字段添加唯一索引
    alter table test add unique index(seller_id);

    普通索引:

    MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。

    //为first_name创建唯一索引
    alter table employees add index first_name (first_name);

    联合索引:

    又称复合索引;Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。

    //为employees表中的birth_date, first_name, last_name创建联合索引
    alter table employees add index bd_fn_ln (birth_date, first_name, last_name);

    全文索引:

    全文索引只能适用于MyISAM引擎,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引。全文索引其实就是根据某个关键字,全文搜索,比如有一个字段内容为“北京博物馆拍卖正在进行中……”,那么当输入“博物馆”几个关键字的时候,则会把该条记录搜索出来。

    开篇我们提到了INNODB引擎是支持BTREE索引的,也为我们下篇讲述索引原理买下伏笔。

    展开全文
  • oracle 创建 唯一索引和非唯一索引

    万次阅读 2017-09-16 13:03:10
    2、输入命令:CREATE UNIQUE INDEX 索引名 on 表名(想要创建索引的列名) TABLESPACE 表空间名; CREATE UNIQUE INDEX gcsj0917 ON VEH_PASSREC_08200916 (GCSJ) TABLESPACE USERS 如果不知道表
  • 1、概念 1)、查看索引 show index from 数据库表名 2)、alter table 数据库表 add index 索引名称(数据库表字段名称) 2、索引类型: 1)、PRIMARY KEY(主键索引...2)、UNIQUE(唯一索引) ALTER TABLE table...
  • 索引根据分类,分为普通索引和唯一索引;有新建索引、修改索引和删除。但是索引不是到处都可以创建,需要根据具体的条件。下面利用实例说明索引创建到销毁的过程,操作如下: 熟悉使用MySQL命令可以方便灵活地执行...
  • SQLServer之创建唯一聚集索引

    千次阅读 2018-09-18 23:48:28
    唯一索引可通过以下方式实现: PRIMARY KEY 或 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动对一列或多列创建唯一聚集索引。 主键列不允许空值。 在创建 ...
  • 查看表中已经存在 index: show index from table_name;...唯一索引名:UDX_table_<column>_<column> 其中<table>是建立索引的表名,&a
  • sql语句创建唯一索引

    千次阅读 2016-01-27 08:37:52
    使用sql语句创建唯一索引,格式如下: create unique index 索引名 on 表名(列名1,列名2……) 示例;在表GoodsMade_Labour的SID列上创建唯一索引IX_GoodsMade_Labour,代码如下: create unique index IX_...
  • SQLServer之创建唯一非聚集索引

    万次阅读 2018-09-19 16:16:16
    唯一索引可通过以下方式实现: PRIMARY KEY 或 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动对一列或多列创建唯一聚集索引。 主键列不允许空值。 在...
  • 在DB2中,添加unique关键词可以创建表索引列的唯一索引。 ( CREATE UNIQUE INDEX indname ON tabname(colname) ) 那么唯一索引与一般索引有何区别呢?我们来从下面两个方面来看。 一.数据加载性能 为什么说...
  • 索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。...1.创建索引 复制代码代码如下: CREATE INDEX indexName ON mytable(username(length)); 如果是CHA
  • 创建索引命名规范

    千次阅读 2020-12-21 16:02:31
    索引命名规范 . 【强制】主键索引名为 pk_表名_字段名;唯一索引名为 uk_表名_字段名;普通索引名则为 idx_表名_字段名。
  • [UNIQUE|FULLTEXT|SPATIAL]:中括号中的三个关键字表示创建的索引类型,他们分别表示唯一索引、全文索引、空间索引三种不同的索引类型。如果我们不指定任何关键字,则默认为普通索引。 index_name:表示索引的名字,...
  • MySQL创建数据库和创建数据表

    万次阅读 多人点赞 2019-10-20 23:44:40
    MySQL 创建数据库和创建数据表 MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。 在这之前,需要先安装好 MySQL ,然后创建好数据库、数据表、操作用户。 一、数据库操作语言 数据库...
  • 一、索引基础:  MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧。下面是创建索引的命令:  > db.test.ensureIndex({"username":1}) ... 删除索引命令是:  > db.test.dro
  • 虽然几张表的数据量都比较大(都在百万级以上),但是也都有正确创建索引,不知道到底慢在了哪里,下面展开调查。 经过几次排除,把问题范围缩小在索引上,首先在确定索引本身没有问题的前提下,考虑索引有没有被...
  • 因数据重复创建唯一索引失败,删除重复数据的SQL语句: delete from stat where id in (select * from (select min(id) from stat group by mid having count(mid)>1) as b); 说明:红色为表明,绿色为...
  • mysql添加索引命令

    千次阅读 2018-11-22 13:47:00
      ...ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.UNIQUE(唯一索引)mysql>ALTER TABLE `table_name` ADD UNIQUE (`column` ) 3.INDEX(普通索引)my...
  • Mysql唯一索引和普通索引的区别,

    千次阅读 2020-07-15 16:47:31
    文章目录Mysql唯一索引和普通索引的区别,那种速度快一点,原因是啥理由说明:结论:1 普通索引2 唯一索引注意:唯一索引和普通索引使用的结构都是B-tree,执行时间复杂度都是O(log n)。3 主索引4 外键索引5 复合索引...
  • 执行重建索引命令:DBCC DBREINDEX('T_CEmployeeRegisterHoliday') 1、没有聚集索引查询 2、有聚集索引查询 3、没有非聚集索引查询 4、有非聚集索引查询 5、查询表索引语句 EXEC sp_helpindex A 6、...
  • 普通索引和唯一索引的区别

    千次阅读 2018-10-11 10:13:15
    唯一索引和普通索引使用的结构都是B-tree,执行时间复杂度都是O(log n)。 1、普通索引  普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件...
  • MongoDB性能篇 -创建索引,组合索引,唯一索引,删除索引和explain执行计划 转载 2015年04月13日 13:02:54 标签: mongodb / 337 编辑 删除 MongoDB性能篇 -创建索引,组合索引,唯一索引...
  • mysql表添加联合唯一索引

    千次阅读 2016-06-08 17:49:08
    在开发过程中遇到了联合索引的问题,现在总结一下: 开发具体环境是这样的:我们有一个行业表,表中包含省份和城市两个字段。因此需要针对这两个字段建立联合索引。 表名称为:sc_blacklistcity 两个字段分别为:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 136,549
精华内容 54,619
关键字:

创建唯一索引的命令是