postgresql - postgresql 中的索引
问题描述
首先,我在数据库USERS中有一个表,其中包含近 3000 万条记录。我对每一列都有不同的索引。但是有些列只有 2 到 3 个非空值,而其他列是空值,但它们的索引大小仍然是 847 MB,比每行包含唯一值的一个索引小一点。
谁能知道为什么会这样?
其次,在 PostgreSQL 中,我们默认为每一列的主键索引都有一个索引,如果我们删除该索引会发生什么后果?该索引的真正用途是什么?当我仅根据其他列中的值进行搜索时,删除主键的索引是否安全?
解决方案
NULL 值与所有其他值一样存储在索引中,因此第一部分并不奇怪。
您不能删除主键索引,您可以做的是删除主键约束。但是你不能确定没有重复的行被添加到表中。如果您认为这没有问题,请查看许多寻求帮助的问题。
每个表都应该有一个主键。
但是,如果您不需要它们,那么摆脱一些其他索引可能是一个好主意。
推荐阅读
- spring - 在请求正文中获取空值
- typescript - 打字稿:类型“字符串”上不存在属性“值”| {值:字符串;标签:字符串;}'
- sql - 选择 MAX(col1) 从
子查询,在哪里 基于来自父查询的值 - python - 单链接聚类算法
- r - 在 R 中为随机创建的样本绘制逻辑曲线
- excel - Worksheet_change 计算中的第一步问题
- sql-server - 将运行超旧 MS Access 服务器的 Windows XP 与运行 SQL 服务器的 Windows 10 链接?
- django-rest-framework - DRF 序列化器方法字段在 update() 方法中更新后返回先前的字段数据
- c# - 我如何更正位置 0 的无行
- node.js - 为什么在使用 bcryptjs 时,“pre”函数主要与 userSchema 一起使用?