- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读到,UUID 作为主键的插入性能取决于数据库中存在多少条记录。记录数量越多,插入记录所需的时间就越长
https://kccoder.com/mysql/uuid-vs-int-insert-performance/
上述文章的作者进行了实验,他认为这是因为UUID Primary_key insert 的读取次数比其他自增整数要多。
我想问数据库是否自动为所选的primary_key创建索引如果UUID Primary_key索引是问题所在,那么通过使用整数作为primary_key索引,同时仍然保留UUID字段,然后将主键切换为UUID,是否可以解决插入问题,那么问题是外键引用整数ID切换时传播到 UUID 字段?
最佳答案
whether databases automatically create an index for the the chosen primary_key
是的。主键始终被索引。在某些数据库中,索引是聚集索引(意味着数据页上的数据实际上是按键排序的)。在其他数据库中,索引是为了强制执行唯一性约束。
UUID 和索引的问题是新值不一定大于旧值。这意味着插入通常是在两个现有记录“之间”进行的。当这种情况发生时,就会出现碎片——也就是说,现有的数据页需要为新记录腾出空间,有时甚至分成两页。
自动递增整数不存在此问题。它被索引(并在 MySQL 中聚集)。然而,新值比任何现有值都大——这就是自动递增的定义。因此,新的值放在最后。仅当删除行或手动设置值时,碎片才会成为问题。
我建议您使用自动递增主键,除非您有特定的 UUID 原因。
关于mysql - UUID Primary_key 索引的插入性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59440191/
我正在开发一个使用 rails 的代码库,之前的开发人员已经在 postgres 中创建了一些相互引用的模型。然而,他们使用 activerecord 的 primary_key 字段,即使数据库没有
在 .net 中创建 Edmx 时存在一个问题,即在创建数据库的 Edmx 时,仅添加具有主键的那些表和 View 。 这个问题很容易解决,但只是在 Table 或 View 中创建一个列主键,但我没
我读到,UUID 作为主键的插入性能取决于数据库中存在多少条记录。记录数量越多,插入记录所需的时间就越长 https://kccoder.com/mysql/uuid-vs-int-insert-pe
我有一个简单的 SQLAlchemy 模型,其中有一列用于 ID: id = Column(Integer, primary_key=True) 这将使 id 从 0 开始,并自动递增 1。如
我在 symfony 4 中的一个项目中工作,数据库在 postgresql 中。有两种更新数据库的方法: 方法 1. 通过带有普通 sql 插入的 python 脚本 方法2.通过symfony表单
我正在使用公共(public)事件 gem 在我的应用程序上创建事件流。为此,我有这个设置。 我已经为我的应用设置了一个友谊模型, create_table "friendships", force:
我有一个基于 WordPress 3.7.1 构建的网站。使用插件我进行数据库备份,但是当我尝试在开发服务器上导入该数据库时,我收到此错误: ERROR 1062 (23000) at line 94
我正在尝试在 Diesel 中使用 #[primarykey()] 宏,但出现未知错误。根据我的发现,添加 #![feature(primary_key)] 应该可以解决问题,但事实并非如此。 lib
我正在尝试创建一个使用 UUID_SHORT() 作为主键的表。我有一个触发器,可以在您执行插入操作时插入一个值。我无法让 sqlalchemy 将列识别为 primary_key 而不会提示不提供默
我们正在迁移我们的 Oracle 数据库并对其进行必要的更改,一个主要更改是我们将 UUIDField 添加为所有模型的主键(对客户端隐藏),并且(尝试添加) 一个常规的 AutoField。 我们发
我正在尝试通过以下方式创建与 rails has_many 的多对多关系:但我需要使用不同的列来创建关系,而不是使用模型主键 (id)。这是我的模型(顺便说一句,我使用的是 Rails 4): cla
我看到已经回答了一个非常相似的问题,讨论了同样的问题,但我似乎无法理解。下面是我在存储过程中的代码的副本。我需要以某种方式将第二个插入语句插入从第一个生成的 CompanyID 到第二个语句中。我很感
我知道外键用于指定子类上何时有不同的列名(不同于父子的类名)。我知道主键和外键是什么,并且多次阅读关于关联的 Rails 文档,但我无法弄清楚主键选项的用途。 1) 但是 primary_key 选项
您好,我正在测试Django身份验证和嵌套用户数据。我为用户创建了一个简单的MyProfil模型。我想测试制作自定义的id并将primary_key=True设置为id = models.UUIDFi
我知道外键用于指定子类上何时有不同的列名(不同于父子的类名)。我知道主键和外键是什么,并且多次阅读关于关联的 Rails 文档,但我无法弄清楚主键选项的用途。 1) 但是 primary_key 选项
我试图在模型中保存大量对象,因此我决定通过这种方式使用bulk_create: while True: batch = list(islice(records, 100)) if no
我有一个表,其中有一列包含另一个表中一行的 ID。但是,当表 A 被填充时,表 B 可能有也可能没有为表 A 准备好的行。 我的问题是,是否可以让 mysql 阻止输入无效值,但可以输入 NULL?还
我正在尝试在我的 helpdesk/models.py 中创建一个自定义的 primary_key,我将用它来跟踪我们的服务台票证。我正在为我们的办公室编写一个小型滴答系统。 也许有更好的方法?现在我
我需要添加一个不是主键的 autoinc 字段。我正在将使用自动递增字段的非常大的生产数据库迁移到 models.UUIDField .我一直在进行分段迁移,现在我的所有关系都与这两种字段类型重复。我
我的一个查询遇到了问题,有时速度很慢。 SELECT * FROM table WHERE primary_key IN (1,2,...) 对于大约 100 个条目,有时甚至需要 5 秒。显然我们在
我是一名优秀的程序员,十分优秀!