精华内容
下载资源
问答
  • MYSQL 引擎innodb ,设置了唯一索引的列值 允许 多个NULL值存在。 示例: 字段 userCardNum 添加了唯一索引 证实是允许存在的多个NULL值数据的: 原由: 因为这里 NULL 的定义 ,是指 未知值。 所以...

    MYSQL 引擎innodb ,设置了唯一索引的列值  允许 多个NULL值存在。

     

     

    示例:

    字段 userCardNum 添加了唯一索引

     

    证实是允许存在的多个NULL值数据的:

     原由:

    因为这里 NULL 的定义 ,是指 未知值。 所以多个 NULL ,都是未知的,不能说它们是相等的,也不能说是不等,就是未知的。所以多个NULL的存在是不违反唯一约束的。

    展开全文
  • ElasticSearch中date类型是个很重要的类型。在聚合、排序、和...在开启自动创建索引(action.auto_create_index)下,传入一个json字符串进行保存时 在某个字段第一次出现时,如果之前没有定义过映射,ES会自动检...

    ElasticSearch中date类型是个很重要的类型。在聚合、排序、和kibana等结合使时都需要date类型。但在某些依赖es动态映射出index,type及字段类型时,时间字段值为时间戳可能出现一些问题:

    这就有个问题,如果json中,时间字段是以 秒时间戳 或者 毫秒时间戳生成的,就无法转换为date,这时可以利用索引模板解决此问题:

    _template/template1  PUT{
    {
      "template": "dealer", 
      "order": 1,
      "mappings": {
        "_default_": {
          "properties": {
            "create_time": {
              "type": "date",
              "format": "epoch_second"
            }
          }
        }
      }
    }
    }
    /**
    template1 --- 创建模板名
    "template": "dealer" --- 模板匹配index='dealer',也可以使用-*等匹配多个索引
    设置create_time 字段为date,为秒时间戳,还可以设置为epoch_millis 毫秒时间戳
    */

    测试:

    • 1.设定模板,匹配index=’public_sentiment’,create_time字段支持秒时间戳,create_time_millis支持毫秒时间戳这里写图片描述
    • 2.删除index=public_sentiment
    • 3.插入测试数据,包含4个字段,create_time,create_time_none,create_time_millis,create_time_millis_none
     @Test
        public void testInsert(){
            long time_millis = System.currentTimeMillis();
            String timestamp = String.valueOf(time_millis/1000);
            long time = Integer.valueOf(timestamp);
    
            String index="public_sentiment";
            String type="public_sentiment-2018";
            String json="{\"type\":\"mouth_quality\"," +
                    "\"create_time_none\":"+time+"," +
                    "\"create_time\":"+time+"," +
                    "\"create_time_millis\":"+time_millis+"," +
                    "\"create_time_millis_none\":"+time_millis+"}";
            ESUtil.index(index, type, json,null);
        }
    • 4.验证插入数据后,自动创建index,且create_time,create_time_millis 为date类型,create_time_none,create_time_millis_none为long类型
      这里写图片描述
    • 5.在kibana中,可以扫描到此date类型
      这里写图片描述
    • 6.时间排序起作用
      这里写图片描述
    展开全文
  • 今天正在吃饭,一个朋友提出了一个他面试中遇到的问题,MySQL允许在唯一索引字段中添加多个NULL值。 这个问题对于我一个非专业DBA说,也没特地去验证过,所以正好借此机会验证一下,做个记录: 测试环境: ...

    今天正在吃饭,一个朋友提出了一个他面试中遇到的问题,MySQL允许在唯一索引字段中添加多个NULL值。

    这个问题对于我一个非专业DBA来说,也没特地去验证过,所以正好借此机会验证一下,做个记录:

    测试环境:

    数据库:MySQL5.7.25
    数据库引擎:InnoDB
    连接工具:Navicat Premium

    首先,创建数据库,并创建测试表 test:

    DROP TABLE IF EXISTS `test`;
    CREATE TABLE `test`  (
      `id` int(11) NOT NULL COMMENT 'ID',
      `name` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '姓名',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;

    然后,我们给name字段添加一个唯一索引:

    ALTER TABLE `test` ADD UNIQUE ( `name`);

    最后,我们尝试插入两条name字段为null的数据:

    INSERT INTO `test` VALUES (1, NULL);
    INSERT INTO `test` VALUES (2, NULL);

    并没有报错,说明MySQL允许在唯一索引字段中添加多个NULL值

    数据表如下:

    MySQL的官方文档给出的解释为:

    A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row. This constraint does not apply to NULL values except for the BDB storage engine. For other engines, a UNIQUE index allows multiple NULL values for columns that can contain NULL.

    我们可以看出,此约束不适用于除BDB存储引擎之外的空值。对于其他引擎,唯一索引允许包含空值的列有多个空值。

     

    网友给出的解释为:

    在sql server中,唯一索引字段不能出现多个null值

    在mysql 的innodb引擎中,是允许在唯一索引的字段中出现多个null值的。

    根据NULL的定义,NULL表示的是未知,因此两个NULL比较的结果既不相等,也不不等,结果仍然是未知。根据这个定义,多个NULL值的存在应该不违反唯一约束,所以是合理的,在oracel也是如此。

    这个解释很形象,既不相等,也不不等,所以结果未知。

    至于,sqlserver和MySQL其他引擎还有待验证。

    展开全文
  • 首先我们看一下怎样在PLSQL中定义一个只含有一个字段的数组: 在这里我们创建一个用户姓名数组 -- PLSQL 定义含有单个字段的数组类型变量 DECLARE TYPE user_name_type IS TABLE OF VARCHAR2(10) INDEX BY ...

    首先我们来看一下怎样在PLSQL中定义一个只含有一个字段的数组:

    在这里我们创建一个用户姓名数组

    -- PLSQL 定义含有单个字段的数组类型变量
    DECLARE
      TYPE user_name_type IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;
      user_name_arr user_name_type;
    BEGIN
      user_name_arr(0) := '张三';
      user_name_arr(1) := '李菁菁';
    
      FOR i IN 0 .. 1
      LOOP
        dbms_output.put_line('User Name:' || user_name_arr(i));
      END LOOP;
    END;

    有如下的输出结果:

    User Name:张三
    User Name:李菁菁


    但是,如果我们要在这个数组里面存储用户多个信息呢?

    我们可以把用户的多个信息封装成一个自定义的属性。

    假设我们的用户含有:姓名,年龄以及性别属性

    自定义属性:

      TYPE user_info_type IS RECORD(
        user_name VARCHAR2(20),
        user_age  NUMBER(3),
        user_sex  VARCHAR2(5));

    然后我们就可以直接使用这个属性来创建数组了!

      TYPE user_info_arr_type IS TABLE OF user_info_type INDEX BY BINARY_INTEGER;
      user_info_arr user_info_arr_type;

    完整的测试代码如下:

    -- PLSQL 定义含有多个字段的数组类型变量
    DECLARE
      TYPE user_info_type IS RECORD(
        user_name VARCHAR2(20),
        user_age  NUMBER(3),
        user_sex  VARCHAR2(5));
    
      TYPE user_info_arr_type IS TABLE OF user_info_type INDEX BY BINARY_INTEGER;
      user_info_arr user_info_arr_type;
    
    BEGIN
      user_info_arr(0).user_name := '张三';
      user_info_arr(0).user_age := 19;
      user_info_arr(0).user_sex := '男';
      user_info_arr(1).user_name := '李菁菁';
      user_info_arr(1).user_age := 23;
      user_info_arr(1).user_sex := '女';
    
      FOR i IN 0 .. 1
      LOOP
        dbms_output.put_line('User Name:' || user_info_arr(i).user_name);
        dbms_output.put_line('User Age:' || user_info_arr(i).user_age);
        dbms_output.put_line('User Sex:' || user_info_arr(i).user_sex);
      END LOOP;
    END;

    输出结果:

    User Name:张三
    User Age:19
    User Sex:男
    User Name:李菁菁
    User Age:23
    User Sex:女

    这样我们就创建了一个含有多个字段的数组类型变量了!

    展开全文
  • device_user , 用来记录设备上的用户名和密码,由于底层设备的用户ID使用的是自增整数,而且是在各自的设备中保持唯一,通信时候服务器下发token到设备,作为全局唯一的设备识别码,因此至少两唯一字段。...
  • 在mysql 的innodb引擎中,是允许在唯一索引字段中出现多个null值的。 根据NULL的定义,NULL表示的是未知,因此两个NULL比较的结果既不相等,也不不等,结果仍然是未知。根据这个定义多个NULL值的存在应该不...
  • Schema:模式,是集合/内核中字段定义,让solr知道集合/内核包含哪些字段字段的数据类型、字段索引存储。2. Schema 的定义方式Solr中提供了两种方式配置schema,两者只能选其2.1 默认方式,通过Schema ...
  • 对实体类的的多个字段建立唯一索引,达到复合主键的效果 package com.sxd.swapping.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; /** * 多个字段 key2 和key...
  • 一般来说, MySQL 中的 B-Tree 索引的物理文件大多都是以 B+tree的结构存储的,也就是所有实际需要的数据都存放于 Tree 的 Leaf Node,而且到任何一个 Leaf Node 的最短路径的长度都是完全相同的,可能各种数据库...
  • Mapping,就是对索引库中索引字段名及其数据类型进行定义,类似于关系数据库中表建立时要定义字段名及其数据类型那样,不过es的mapping比数据库灵活很,它可以动态添加字段。一般不需要要指定mapping都可以,因为...
  • 时间字段索引

    万次阅读 2018-11-14 22:05:20
    一、深入浅出理解索引结构   实际上,您可以索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引... 其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会...
  • 1. 索引 索引(index)是Elasticsearch对逻辑数据的...Elasticsearch可以索引存放在台机器或者分散在多台服务器上,每个索引多个分片(shard),每个分片可以多个副本(replica)。 2. 文档 存储在Elasti
  • 1、表的主键、外键必须有索引;...6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替: A、正确选择复合索引中的主列字...
  • 发现mysql一个可以有几个唯一索引

    千次阅读 2018-04-26 09:07:44
    mysql一个可以多个唯一索引。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,...
  • Elasticsearch索引字段命名规范

    万次阅读 2019-07-14 11:38:35
    实际中使用Elasticsearch,首要需要考虑定义索引、映射以及字段等,本文总结下必要的命名规范。 索引 索引受文件系统的限制。仅可能为小写字母,不能下划线开头。同时需遵守下列规则: 不能包括 , /, *, ?, ", ...
  • mysql中 myisam,innodb默认使用的是 Btree索引,至于btree的数据结构是怎样的都不重要, 只需要知道结果,既然是索引那这数据结构最后...组合索引可以这样理解,比如 (a,b,c) ,abc都是排好序的。 在任意段...
  • Kibana定义索引模式

    万次阅读 2018-08-09 17:32:49
    索引模式可以匹配单个索引的名称,或者包含通配符(*)以匹配多个索引。 例如,Logstash通常以logstash-YYYY.MMM.DD格式创建系列索引。 要浏览2018年5月的所有日志数据,您可以指定索引模式logstash-2018.05 *。...
  • ElasticSearch多个字段分词查询高亮显示

    万次阅读 热门讨论 2016-04-04 08:53:19
    ElasticSearch关键字查询,将关键字分词后查询,多个字段,查询出来字段高亮显示。 查询方法如下:public List<NewsInfo> searcher2(String key, String indexId, String type) { List<NewsInfo> newsInfos= new ...
  • MySQL如何建立JSON字段索引

    千次阅读 2019-03-27 16:29:15
    概述 MySQL从5.7.8起开始支持JSON字段,这极大的丰富了...但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少没有直接对其字段进行索引的方法。本文将介绍利用MySQL 5.7中的虚拟字段的功能对JSON对象中...
  • 会发现随着表中记录的增多,查询的速度也会也越慢,特别是那种日志记录,少则几十万,则上百万,甚至上千万数据,如果查询次耗时太长,会严重影响业务逻辑,这时候可以考虑给经常作为条件的字段添加索引了...
  • MySQL的一个表最多可以有多少个字段

    万次阅读 2016-07-12 16:11:08
    原文:http://mp.weixin.qq.com/s?__biz=MzAwMjkyMjEwNg==&mid=2247483785&idx=1&sn=1d90a44915d1028c6dc150367e1af033#rd ...*如果我将下面表中的varchar(200),修改成text(或blob):报错变为另一个:*
  • ES学习之单个索引映射多个类型

    万次阅读 2018-06-19 13:31:00
    在6.0.0以下的版本中创建的一个索引映射多个类型的索引在6.0.0版本中继续发挥作用,但是将在7.0.0中完全删除。 自第一次发布弹出式搜索以来,每个文档都存储在一个索引中,并分配一个映射类型。映射类型用于表示被...
  • mysql多字段唯一以及联合索引

    千次阅读 2011-09-28 16:28:27
    create table user(id bigint(10), name varchar(20), qq varchar(10)); alter table user add constraint u_idname...创建联合索引: alter table user add index idx_union(id, name)
  • 在实际工作中不仅仅对索引中的单个字段进行搜索。 比如book表中有id,name(标题),price,summary(摘要),content(内容),我们要找一本书的时候,...在schema.xml中将需要检索的字段,使用copyField拷贝到一个新的sear
  • 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。  这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。   〖例1〗...
  • MySQL 字符集不一致导致索引失效的一个真实案例

    千次阅读 多人点赞 2020-07-10 11:29:42
    MySQL 字符集不一致导致索引失效的一个真实案例,通过 explain 和 show warnings 发现索引没有被使用,而且存在字符集转换的操作。通过修改字段的字符集之后,解决了慢查询的性能问题。
  • MySQL单列索引索引

    千次阅读 2018-09-21 16:12:09
    在设计MySql表索引的时候,可能有个问题,就是多个...定义:即是在表中根据查询需求在多个字段上设计一个索引; 特点:稍微复杂,需要考虑索引顺序; 3.性能上的对比 多个单列索引的情况下,MySql在执行查询时,如...
  • 主键、聚集索引、非聚集索引区别

    千次阅读 2020-07-14 10:59:36
    一个索引可以多个字段来定义 是否允许 null 数据行出现 如果要创建的数据列中数据存在null,无法建立主键。 创建表时指定的 PRIMARY KEY 约束列隐式转换为 NOT NULL。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 271,058
精华内容 108,423
关键字:

一个索引可以多个字段来定义