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

程序员硬核“年终大扫除”,清理了数据库 70GB 空间

PostgreSQL 12 当索引包含许多重复值时,这些重复值将存储在索引叶中。如此一来,将占用很多空间。...13 之前的版本迁移的话,需要使用 REINDEX 命令来重建索引,来充分利用索引去重复的优势。...在这个交易表,既有购买用户又有取消用户的,并且每个字段都定义了一个B树索引。采购用户对此具有 NOT NULL 约束,因此所有行均具有值。...为了防止这类隐式功在不引起我们注意的情况下潜入索引,我们创建了Django检查来强制自己始终显式设置db_index。...Django生成的迁移将首先禁用FK约束(如果该字段是),则删除现有的完整索引并创建新的部分索引。执行此迁移可能会导致停机和性能下降,我们实际上不会运行它。 手动创建部分索引:使用Django的.

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

MOP 系列|MOP 三种主流数据库索引简介

唯一索引 •唯一索引是组成索引的列上没有任何重复值的索引,如果尝试子啊包含重复值的表上创建唯一索引则会报错。当创建唯一约束时会自动创建唯一索引。...create index idx_cust_id_rev on cust(cust_id) reverse; 压缩索引 •压缩索引有助于减少前导列经常重复组合索引的存储和IO要求。...倒排索引中为每一个组成值都包含一个单独的,它可以高效地处理测试指定组成值是否存在的查询。...和 Oracle 数据库一样,PostgreSQL 也支持函数索引。实际上,PostgreSQL 索引的除了可以是一个函数,还可以是从一个或多个字段计算出来的标量表达式。...而索引中只包含那些符合该谓词的表行的。部分索引是一种专门的特性, 但在很多种情况下它们也很有用。

7910

3分钟速读原著《高性能MySQL》(二)

3.注意事项 3.1 索引不会包含有null值的列: 只要列中包含有null值都将不会被包含在索引中,复合索引中只要有一列含有null值,那么这一列对于此复合索引就是无效的。...但是通过合理创建视图,可以把权限限定到行列级别 4.视图的使用场景 权限控制的时候,不希望用户访问表中某些含敏感信息的列,比如工资 关键信息来源于多个复杂关联表,可以创建视图提取我们需要的信息,简化操作 三....1.定义 表的是另一表的主键, 可以有重复的, 可以是NULL 2.作用 用来和其他表建立联系用的 3.个数 一个表可以有多个 4.建议 引用自阿里Java开发手册:【强制】不得使用与级联...,一切概念必须在应用层解决。...总的来说不要在数据库层面使用,了解即可 四.查询缓存 在Navicat中执行 SHOW VARIABLES LIKE '%query_cache%'; ?

50110

数据导入与预处理-课程总结-04~06章

keep:表示采用哪种方式保留重复,该参数可以取值为’first’(默认值)、 'last '和 ‘False’,其中’first’代表删除重复,仅保留第一次出现的数据;'last '代表删除重复...duplicated()方法检测完数据后会返回一个由布尔值组成的Series类对象,该对象中若包含True,说明True对应的一行数据为重复。...’表示删除所有的重复。...how参数的取值‘inner’代表基于left与right的共有的合并,类似于数据库的内连接操作;'left’代表基于left的合并,类似于数据库的左连接操作;'right’代表基于right的合并...,类似于数据库的右连接操作;'outer’代表基于所有left与right的合并,类似于数据库的全连接操作。

13K10

MySQL 连接查询

1.什么是连接查询 在关系型数据库管理系统(RDBMS)中,连接查询是一重要的数据库操作,它允许我们从多个表中检索和组合数据,以便进行更复杂的查询和分析。...比如员工的个人信息存储在 employee 表中,部门相关的信息存储在 department 表中,同时 employee 表中存在一个字段(dept_id),引用了 department 表的主键字段...通常,ON 子句用于指定如何连接表的条件,而 WHERE 子句则限制结果集中包含哪些行。 USING(join_column_list) 子句指定两个表中都必须存在的列的列表。...如果表 a 和 b 都包含列 c1、c2 和 c3,则以下连接分别使用 USING 和 ON 指定连接条件是等价的。...MySQL 不支持全连接,但是我们可以对左连接和右连接的结果做 UNION 操作(会去除重复行)来实现。

23820

PostgreSQL 教程

INTERSECT 组合两个或多个查询的结果集并返回一个结果集,该结果集的行都出现在两个结果集中。 EXCEPT 返回第一个查询中未出现在第二个查询的输出中的行。 第 6 节....CUBE 定义多个分组集,其中包括所有可能的维度组合。 ROLLUP 生成包含总计和小计的报告。 第 7 节. 子查询 主题 描述 子查询 编写一个嵌套在另一个查询中的查询。...了解 PostgreSQL 约束 主题 描述 主键 说明在创建表或向现有表添加主键时如何定义主键。 展示如何在创建新表时定义约束或为现有表添加约束。...hstore 向您介绍数据类型,它是存储在 PostgreSQL 中单个值中的一组/值对。 JSON 说明如何使用 JSON 数据类型,并向您展示如何使用一些最重要的 JSON 运算符和函数。...PostgreSQL 技巧 主题 描述 如何比较两个表 描述如何比较数据库中两个表中的数据。 如何在 PostgreSQL 中删除重复行 向您展示从表中删除重复行的各种方法。

44810

数据导入与预处理-第6章-01数据集成

常用的合并数据的函数包括: 2.1 主键合并数据merge 主键合并数据类似于关系型数据库的连接操作,主要通过指定一个或多个将两组数据进行连接,通常以两组数据中重复的列索引为合并。...how参数的取值‘inner’代表基于left与right的共有的合并,类似于数据库的内连接操作;'left’代表基于left的合并,类似于数据库的左连接操作;'right’代表基于right的合并...,类似于数据库的右连接操作;'outer’代表基于所有left与right的合并,类似于数据库的全连接操作。...=list('AB')) print(df1) df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB')) print(df2) # 纵向追加...lsuffix: 左DataFrame中重复列的后缀 rsuffix: 右DataFrame中重复列的后缀 sort: 按字典序对结果在连接上排序 join方式为按某个相同列进行join: score_df

2.5K20

CentOS(linux)安装PostgreSQL

PostgreSQL是完全的事务安全性数据库,完整地支持、联合、视图、触发器和存储过程(并支持多种语言开发存储过程)。...PostgreSQL对很多高级开发语言有原生的编程接口,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl 和ODBC以及其他语言等,也包含各种文档。...Data集成性功能包括(复合)主键、含有严格约束或级联更新和删除功能的、录入检查约束、唯一性约束和非空约束。 PostgreSQL也具有很多扩展模块和更高级的功能。...查看可安装包 yum list postgres* 安装数据库 yum install postgresql10-server.x86_64 初始化 首先找到安装好的服务,并不是postgres,查看...: \c dbname (3)列出当前数据库下的数据表 mysql: show tables psql: \d (4)列出指定表的所有字段 mysql: show columns from table

2.8K20

MySQL入门详解(一)---mysql的语言

: user表包含用户账号密码主机信息 (Host:账号作用IP范围,%-为不限制) db表包含某用户对数据库访问权限 table_priv表和columns_priv表包含表列级权限 procs_priv...表文件夹中存放.frm表结构文件 date文件夹中.ibdata1存放数据 .ibd存放索引 MyISAM:访问速度很快,但不支持和事务。...,在数据查写读时能按一定顺序和排列工作 唯一:unique 一个表中可以同时给多个字段设置unique,设置了的字段值不能重复null除外 普通索引:index 没有其他约束 文本索引...:fulltext 5.7版本之后使用,加快大批量文本中的查找效率 mysql 副表的非主键字段与主表的主键字段关联,那么这个副表的非主键字段称为 在副表中添加一个主键中不存在的数据...把多个SELECT查询结果合并起来 select column_1 from table1 union select column_2 from table2 列名总显示第一个查询语句列名,默认清除重复

1.2K30

MySQL还能这样玩---第二篇之不为人知的分区

COLUMNS分区:类似于RANGE和LIST,区别在于分区既可以是多列,又可以是非整数。 HASH分区: 基于给定的分区个数,把数据取模分配到不同的分区。...如果希望RANGE和LIST了下的分区中使用非INT列作为分区,可以选择COLUMNS分区。...同时HASH分区只支持整数分区,而KEY分区支持使用BLOB和TEST其他类型的列作为分区。...删除list分区和删除rang分区的语句相同,只不过删除list分区之后,由于list分区的定义中不再包含已经被删除了的分区的值列表,所以后续无法写入包含有已经删除了的分区值列表的数据。...,也不能有其他表的依赖nt nt表的所有数据,应该都在分区p定义范围内。

48440

PostgreSQLPostgreSQL 12的8大改进,性能大幅度提升

这是PostgreSQL 12中发现的八个最重要的改进。 1.分区性能 分区并不是一新功能,它已经存在了好几年了,但是分区开销却降低了性能。...此外,用户现在可以更改分区表而不会阻止查询,并可以使用引用分区表。 2. B树增强 B-Tree功能是近年来对PostgreSQL添加的最复杂的功能之一。使用B树的好处是减少了访问的磁盘块的数量。...具有重复(非唯一B树索引)的索引的性能得以提高,并且从索引中删除元组(行)的真空运行效率更高。此外,索引更新期间的锁定要求有所降低。...在此功能之前,PostgreSQL仅记录了多个列的单个相关值。从本质上讲,它将俄亥俄州的辛辛那提和亚利桑那州的辛辛那提视为同一件事。现在,您可以比较多个列并关联组合以优化查询索引。...5.准备好的计划控制 一重要的新功能使用户可以控制PostgreSQL优化器的行为,并有可能提高性能。

2.9K20

PostgreSQL13新特性解读-Btree索引去重Deduplication

PostgreSQL13引入deduplication技术,通过deduplicate_items 参数开启(默认开启),B-Tree索引可以为重复使用一种特殊的、节省空间的表示形式。...索引元组的结构是Key=xxx,TID=(block=xxx,Offset=xxx),其中key代表索引的键值,也就是索引指向真实元组的字段值,TID是一个指向数据元组的指针数据结构,它包含两部分,第一部分是...Deduplication的工作原理是定期将多组重复组合并在一起,为每个组形成一个“posting list”。列键值key在此表示中只出现一次。后面是一个TID排序数组,指向表中的行。...这样我们就能理解了,deduplication就是将重复的key值只存储一次,然后该key对应的TID变为一个数组,这个数组分别记录了这些相同元组的块号和偏移量。...从表中获取的排序输入中遇到的每一组重复的元组在添加到当前叶子节点之前被批量合并到一个“posting list”中。每个posting list元组都包含尽可能多的TID。

1.3K30

ClickHouse *MergeTree表引擎

ENGINE:表的引擎类型,MergeTree要求有一个日期字段,还有主键 PARTITION BY — 分区 ORDER BY — 排序 PRIMARY KEY — 主键,默认情况下主键跟排序(...ReplacingMergeTree 该引擎和MergeTree的不同之处在于它会删除具有相同主键的重复。但数据的去重只会在merge的过程中出现,merge操作是后台进程异步执行。...因此,ReplacingMergeTree 适用于在后台清除重复的数据以节省空间,并不保证没有重复的数据出现。...如果主键的组合方式使得单个键值对应于大量的行,则可以显著的减少存储空间并加快数据查询的速度。...如果没有指定 [columns],ClickHouse 会把除主键的其他列都进行汇总。 如果用于汇总的所有列中的值均为0,则该行会被删除。

5.4K31
领券