首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL系列(三)SQL使用的旁枝末节

=false; -- 不显示库表前缀 这里重点说一下严格模式和非严格模式:Hive在严格模式下查询时,需指定分区(查询分区表时),排序后需增加limit限制,不支持笛卡尔积查询。...防止误操作等造成的资源浪费。 在严格模式下需指定分区,避免全盘扫面带来的浪费 分区简单理解就是文件夹,例如按照日期建立多个文件夹,每个日期的数据存在相应的文件夹下。此时的分区字段就是日期。...例如: select * from temp1 where dt = current_date(dt, -1) -- 指定分区为昨日 在严格模式下需限制排序数量,避免全局排序造成的浪费 如果排序完后要获取所有数据...,主要防止分析师的不当操作,造成资源大量浪费 可以增加关联字段代替笛卡尔积查询方式,如果还会报错,可以设置参数开启非严格模式,例如: -- 开启非严格模式 -- 理论上不开启下述代码也能正常运行 set.../数值型字符串比较的区别 select -- 非数值型字符串与数字比较,会造成结果为null 'abc' !

43230
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【翻译】MongoDB指南引言

    /排序顺序 当比较不同BSON类型的值时,MongoDB使用下面的比较顺序,从最低到最高: 1.MinKey (内部类型) 2.Null 3.Numbers (ints, longs, doubles)...对于比较而言,MongoDB将不存在的字段看作空BSON 对象,例如,对{ } 和{ a: null }在排序中被看作是等价的。...对于数组而言,小于比较或者升序排序比较的是数组中最小的元素,大于比较或者降序排序比较的是数组中最大的元素。...给值为ObjectId的_id字段排序大体等价于按时间排序。 重要的: 在一秒之内,ObjectId值的顺序与生成时间之间的关系并不是严格的。...如果单系统中,多个系统或多个进程或多个线程在一秒内产生了多个ObjectId值,这些值并不会严格地按照插入顺序展示。多客户端之间的时钟偏移也会导致不严格排序,即使这些值由客户端驱动程序生成。

    4.3K60

    SQL谓词的概述(一)

    当希望返回包含已知子字符串的文字字符或包含已知序列中的多个已知子字符串的数据值时,请使用LIKE。LIKE使用其目标的排序规则进行字母大小写比较。...默认情况下,字符串数据类型字段是用SQLUPPER排序规则定义的,它不区分大小写。 如果在查询中指定排序规则类型,则必须在比较的两边指定它。...但是,LIKE谓词可以使用通配符来匹配嵌入在字符串中的子字符串。 LIKE使用字段的默认排序规则,默认情况下不区分大小写。...NOT一元操作符只影响紧随其后的谓词。 谓词严格按照从左到右的顺序计算。 可以使用括号对谓词进行分组。 可以在左括号前放置NOT一元操作符,以反转一组谓词的含义。...括号前后、括号与逻辑运算符之间不需要空格。 IN和%INLIST谓词在功能上相当于多个OR相等谓词。

    1.2K20

    lua sort排序_python中列表排序的用法

    对于lua中的排序,最好是用lua自带的函数,不要自己造轮子,自己写一个排序的函数 在排序的时候应该是严格弱序,用小于关系。...正确的排序应该满足的条件,才能得到结果 1)反自反性 cmp(a, a) === false 就是在写的排序的实现中,自己和自己比较,要永远是false 2)非对称性 cmp(a, b) ==...二:多个条件的比较 在一些需求当中,比较的数据不是一个,是组合的形式出现的,先是比较字段a,如果相等再比较字段b,那么在 处理这样的实例当中,有以下的几种方式 1) function(a, b)...因为它具有很大的延展性,如果以后比较的是三个或者是三个以上的字段, 那么直接在后面添加就是,第二种的话,就是要倒序的去比较,讲比较的字段分成比较的先后顺序为1,2,3,4....不好理解 三:排序与最值 对于不同的排序方式,算法得到的效果不同,那么就要考虑一下算法的复杂度。

    1.3K30

    MongoDB Document

    这些操作会对字段重排序 对于写入操作,MongoDB会保留Document字段写入的顺序,但是_id字段总是会作为Document的第一个字段,对于字段的重命名也会导致Document字段的重新排序。...ordinal 在比较Timestamp时,虽然存储使用的是小端序存储,但是所有的平台总是先比较time_t,然后再比较ordinal,这样可以保证不受大小端序的影响。...MongDB中的比较排序 在不同的BSON types的比较时,从小到大依次为: MinKey (internal type) Null Numbers (ints, longs, doubles, decimals...Array比较 升序排序时会依据BSON类型进行排序,首先比较最小的元素,如果相同继续比较下一个 降序排序与升序排序相反 当单元素数组和非数组字段比较时,比较的是数组中的元素和非数组字段的值 空数组小于...,为了保留BSON中的数据类型,MOngoDB提供MongoDB Extended JSON来进行支持,MongoDB中的扩展JSON有两种模式: 严格模式:会保留数据类型信息,可读性和交互性变低 宽松模式

    12110

    MySQL优化十大技巧

    因为是采用二进制存储,在比较字符和排序的时候,都是二进制进行的,所以只有需要操作二进制时才需要使用。...四、索引 1.索引概述 利用关键字,就是记录的部分数据(某个字段,某些字段,某个字段的一部分),建立与记录位置的对应关系,就是索引。索引的关键字一定是排序的。...如果一个索引通过在多个字段上提取的关键字,称之为复合索引。...如果是复合索引: 关键字的排序先排左侧字段,在左侧字段相同的情况下,再排序右侧字段: 9.聚集索引(聚簇索引) B+Tree(B-Tree的变种) 在innodb的存储引擎上,主键索引是与数据记录存储在一起的...是MySQL提供一个可以将多个结构相同的myisam表,合并到一起的存储引擎: ? (2)垂直分表 一张表中存在多个字段。

    50420

    mysql优化策略

    关于INT(11)存放时间戳的优点如下: a.INT占4个字节,DATETIME占8个字节; b.INT存储索引的空间比DATETIME小,查询快,排序效率高; c.在计算机时间差等范围问题,比较方便。...因为是采用二进制存储,在比较字符和排序的时候,都是二进制进行的,所以只有需要操作二进制时才需要使用。...四、索引 1.索引概述 利用关键字,就是记录的部分数据(某个字段,某些字段,某个字段的一部分),建立与记录位置的对应关系,就是索引。索引的关键字一定是排序的。...如果一个索引通过在多个字段上提取的关键字,称之为复合索引。...每个关键字之间,存在子节点指针: 如果是复合索引: 关键字的排序先排左侧字段,在左侧字段相同的情况下,再排序右侧字段: 9.聚集索引(聚簇索引) B+Tree(B-Tree的变种) 在innodb的存储引擎上

    71210

    Apache Hive

    cluster by:除了具有distribute by的功能外,还会对该字段进行排序。...当字段相同时,cluster by效果等同于distribute by+sort by。 注意:cluster 和 sort 在查询(select)时不能共存,建表时可以共存 6....如果要进行抽样,建议: 1.如果提前分桶了,表分桶数与抽样分桶数一致,那么只会扫描那个指定桶的数据 2.如果预先分桶和抽样分桶数不一致:重新分桶 3.如果没分桶:先分桶,在抽样 7.Hive的严格模式和非严格模式...通过开启严格模式,主要是为了禁止某些查询(这些查询可能造成意想不到的坏的结果),目前主要禁止3种类型的查询: 1)分区表查询 在查询一个分区表时,必须在where语句后指定分区字段,否则不允许执行。...示例select coalesce(null,null,5,null,1,0) as x; 返回5 3.case when 可以与某字段多个比较值的判断,并分别产生不同结果,与其他语言中case语法相似

    1.2K10

    LinuxShell命令sort

    将小写字母折合为大写字母进行排序比较 -g, --general-numeric-sort 按照通常的字符数值进行排序比较 -i, --ignore-nonprinting 仅考虑可打印字符 -M,...(带数量级字母)进行排序比较(比如 3K < 2M < 1G) -n, --numeric-sort 按照字符串的数值大小进行排序比较 -R, --random-sort 按随机顺序输出(对于相同的行会进行分组...- 则从标准输入读取文件名 -k pos1[,pos2], --key=pos1[,pos2] 指定用于排序的行文本字段(一行文本中的字段从左到右从 1 开始计数)若未给定 pos2,则默认到最后一个字段...-m, --merge 归并多个已经有序的文件后输出 -o FILE, --output=FILE 将结果写入 FILE 文件而不是标准输出 -s, --stable 通过禁用最后的再分类比较来稳定排序...与 -c 合用,检查是否严格有序;不与 -c 合用,输出第一个导致不严格有序的行信息 -z, --zero-terminated 指定行界定符为全零字节(ASCII NUL)而不是换行符 --help

    52820

    Mysql学习笔记,持续记录

    possible_keys possible_keys 显示可能应用在这张表中的索引,一个或多个。查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询实际使用。...2. null和数值进行比较 MySQL 使用三值逻辑 —— TRUE, FALSE 和 UNKNOWN。任何与 NULL 值进行的比较都会与第三种值 UNKNOWN 做比较。...使用null和任何数值去做比较判断,得到的都是false;只能使用is null和is not null进行操作; 3. datetime的使用 mysql进行日期比较时,日期格式必须是标准的YYYY-MM-DD...外键创建失败的几种原因 外键的字段与关联的字段的类型不匹配(包括编码格式的不匹配) 外键的名字是一个已经存在的键值,要保证名字的唯一 mysql引擎引起的外键创建不能保存或者不能发挥作用的情况,mysql...4.字符串列 order by 进行order by时也可以使用表达式进行排序。

    1.2K50

    最佳实践| 一文读懂《MongoDB 使用规范及最佳实践》原理

    MongoDB 如果索引字段是数组,那我们可以理解为对每个数组元素创建索引。如果要是多个数组字段建组合索引,就意味着它可能会产生笛卡尔级数据量的索引。...TTL 索引如果是复合索引则过期将会失效 通常你想创建一个 TTL 索引,但创建的时候构建了多个字段的组合索引,那么 TTL 就会失效。...key 的字段,但依然建议不要轻易调整 key 的值或 key 的字段构成 ,而是建议在初始化分片 key 的时候就评估好。...MongoDB 3.2 开始在创建集合的时候提供了 validator 选项来规范插入和更新数据的规则 为了增强 3.2 版本 validator 功能 MongoDB 3.6 提供了 JSON Schema...):定义具体的校验规则 validationLevel:定义了插入更新记录时应用校验规则的严格程度 strict:默认严格级别校验规则会应用到所有的插入与更新上 moderate:仅对 insert

    2.4K50

    MongoDB系列四(索引).

    这是因为索引能够迅速将搜索范围缩小到一个比较小的结果集。对于低基数的字段,索引通常无法排除掉大量可能的匹配。假设我们在"gender"上有一个索引,需要查找名为Susan的女性用户。...注意,这里的 age 严格的按照升序排序,并且相同的 age 对应的 username 也严格的按照升序排序。...设计多键索引的时候要记得,要把基数大的字段放在索引的前面,因为这样能更快缩小查询的范围。 二、索引类型 复合(组合)索引 复合索引就是一个建立在多个字段上的索引。...如果查询中有多个排序方向或者查询条件中有多个键,复合索引就非常有效。 db.userInfo.ensureIndex({"age":1,"age":1})  进行多键排序时,索引的方向尤为重要。...db.users.ensureIndex({"loc" : 1}) 只有在进行与对象字段顺序完全匹配的子文档查询时(比如db.users.find({"loc" :{"ip" : "123.456.789.000

    2.3K50

    ClickHouse在大数据领域应用实践

    1、排序 在合并树家族引擎中,表排序属性是必选项。通过ORDER BY关键字设置分区内数据的排序策略,数据在导入或者保存时按照排序策略有序存储,有序数据直接存储在磁盘中,查询时具有较高的效率。...排序列也是索引列,高频用作查询条件的字段添加到排序列有利于提高查询效率。 2、主键 主键的定义比较奇怪,仅仅是起到过滤查询索引的作用,没有唯一约束的效果。...属性 含义 备注 ORDER BY 指定排序字段(必选) 指定一个或者多个字段作为排序字段...2、ReplacingMergeTree ReplacingMergeTree引擎用来去除重复行,此处的去重有三个层次的含义:在分区内去重;以主键字段为比较对象;数据去重实践只会在合并时发生。...去重深刻理解 这里的去重并不能达到关系型数据库严格意义去重的目的,使用时需要注意这个现象。另外不能以非黑即白的想法考虑这个问题,ClickHouse在提高查询速度时做了一定的妥协。

    2.3K80

    简述ElasticSearch里面复杂关系数据的存储方式

    ,所以在使用搜索框架时,我们应该避免把搜索引擎当做关系型数据库用。...但实际上并不能算严格意义上的关系,因为lucene底层是扁平化存储的,这样以来多个汽车的数据实际都是存到一起的混杂的,你没办法单独获取到这个人某一辆汽车的数据,因为整条数据都是一个整体,无论什么操作整条数据都会返回...在使用parent/children管理关联关系时,es会在每个shard的内存中维护一张关系表,在检索时,通过has_parent和has_child过滤器来得到关联的数据,这种模式下父文档与子文档也是独立的...父文档的mapping type: 子文档的mapping type: 插入数据时,需要先插入父文档: 然后插入子文档时,需要加上路由字段: 总结: 方法一: (1)简单,快速,性能较高 (2)对维护一对一的关系比较擅长...,所以适合更新频繁的场景 (4)排序和评分操作比较麻烦,需要额外的脚本函数支持 每种方式都有其合适的应用场景,所以具体实践中,我们要根据实际的业务场景选择合适的存储方式。

    5.2K70

    hive基础总结(面试常用)

    ,分区字段与普通字段的区别:分区字段会在HDFS表目录下生成一个分区字段名称的目录,而普通字段则不会,查询的时候可以当成普通字段来使用,一般不直接和业务直接相关。...asc 升序 order by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),然而只有一个Reducer,会导致当输入规模较大时,消耗较长的计算时间。...sort by不同于order by,它不受Hive.mapred.mode属性的影响,sort by的数据只能保证在同一个reduce中的数据可以按指定字段排序。...,严格模式下将会限制一些查询操作 文件格式,ORC PARQUET 等 分区表 select 查询不加where过滤条件,不会执行 开启严格模式 hive提供的严格模式,禁止3...可以在空值前面加随机散列 3种常见的join Map-side Join mapJoin的主要意思就是,当链接的两个表是一个比较小的表和一个特别大的表的时候,我们把比较小的table直接放到内存中去,

    76730

    分库分表需要考虑的问题及方案

    )和其多个次表之间保留关联关系,也就是说:当同时进行垂直和水平切分时,在垂直方向上的切分将不再以“功能模块”进行划分,而是需要更加细粒度的垂直切分,而这个粒度与领域驱动设计中的“聚合”概念不谋而合,甚至可以说是完全一致...基于两阶段提交的分布式事务在提交事务时需要在多个节点之间进行协调,最大限度地推后了提交事务的时间点,客观上延长了事务的执行时间,这会导致事务在访问共享资源时发生冲突和死锁的概率增高,随着数据库节点的增多...笼统地讲,与事务在执行中发生错误后立即回滚的方式不同,事务补偿是一种事后检查并补救的措施,它只期望在一个容许时间周期内得到最终一致的结果就可以了。...7、跨分片的排序分页 一般来讲,分页时需要按照指定字段进行排序。当排序字段就是分片字段的时候,我们通过分片规则可以比较容易定位到指定的分片,而当排序字段非分片字段的时候,情况就会变得比较复杂了。...实践中,为了处理简单,选择mod分库的比较多。同时二次分库时,为了数据迁移方便,一般是按倍数增加,比如初始4个库,二次分裂为8个,再16个。

    1.6K20

    MySQL-复杂查询及条件-起别名-多表查询-04

    = = 比较运算符 and or not 与或非连接多个条件 is 范围 exists 是否存在 like 模糊匹配 regexp 正则 group by 分组 应用场景 分组严格模式(推荐开启...另一种结果排版 \G 当表字段特别多的时候,结果的排版可能会出现混乱的现象,你可以在语句最后加 \G 来改变排版,方便查看 ? 比较差的展示结果,这种情况就非常适合用 \G 来看数据 ?...简单查询语句的书写与执行顺序 查询语句书写 查询出 emp 表中id 在 3~6 的员工详细信息 思路:从emp 表中,查 id 大于3 且 小于 6 的数据 ?...and or not 与或非连接多个条件 一般用来连接多个条件 and 并且 or 或 not 非 is 针对 null 判断的时候只能用 is 不能用 = 案例 # and # 1.查询id大于等于...order by 排序 order by 有升序(ASC)、降序(DESC)两种排序规则,默认升序 多个排序字段时,放前面的作为优先排序条件,相同再按照后面的字段排序 select post,

    3.8K20

    分库分表需要考虑的问题及方案

    )和其多个次表之间保留关联关系,也就是说:当同时进行垂直和水平切分时,在垂直方向上的切分将不再以“功能模块”进行划分,而是需要更加细粒度的垂直切分,而这个粒度与领域驱动设计中的“聚合”概念不谋而合,甚至可以说是完全一致...,是分布式系统下最严格的事务实现方式。...基于两阶段提交的分布式事务在提交事务时需要在多个节点之间进行协调,最大限度地推后了提交事务的时间点,客观上延长了事务的执行时间,这会导致事务在访问共享资源时发生冲突和死锁的概率增高,随着数据库节点的增多...笼统地讲,与事务在执行中发生错误后立即回滚的方式不同,事务补偿是一种事后检查并补救的措施,它只期望在一个容许时间周期内得到最终一致的结果就可以了。...7、跨分片的排序分页 一般来讲,分页时需要按照指定字段进行排序。当排序字段就是分片字段的时候,我们通过分片规则可以比较容易定位到指定的分片,而当排序字段非分片字段的时候,情况就会变得比较复杂了。

    43410
    领券