- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个比一对多连接更复杂的想法。我有一堆可以评论的表格,例如照片、帖子、用户等。我的评论表包含 3 个有助于识别评论的字段:
item-id
- 评论所属项目的idtable
- item-id
所在的表(保存为整数,但在下面显示为名称以避免混淆)id
- 评论的 id,相对于 item-id
为了更好理解的示例:
id item-id table
1 1 photos
2 1 photos
1 1 posts
2 1 posts
1 2 posts
1 1 users
现在的问题是插入。我发现很难确定当前的最后一个 ID。鉴于上表,如果用户要对 item-id
= 1 的照片发表评论,则新评论的 ID 必须为 3。我能想到的唯一方法是运行插入时的子查询,但我不是子查询的忠实粉丝。 mysql 中是否有某种内置机制可以帮助我实现这一目标,或者是否有任何其他简单而可靠的方法?
最佳答案
来自您的评论:
I've come up with this because of the fear of unique ids running out. I know that the maximum integer value mysql can store is 1*10 to the 19th or something, which is a ridiculously large number, but not infinite. As well as numbers as huge take up more space?
MySQL 的有符号 INT 类型最多可以达到 231-1。一个无符号 INT 最多可以达到 232-1,即 4,294,967,295。
没错,这不是无限的,但 42 亿已经相当高了,可以轻松满足大多数需求。
您还可以使用有符号或无符号的 BIGINT,它是 8 个字节,是 INT 大小的两倍,但如果您需要大于 INT 的值,则必须存储它们。
Unsigned BIGINT 上升到 264-1 或 18,446,744,073,709,551,615。你真的、真的、真的不太可能在你的一生中用完这些值,即使你每小时重新加载整个数据库多次。
回复你的评论。
是的,大多数数据类型都是固定大小的,这意味着它们在每一行上使用相同数量的字节,无论您在任何给定行上存储的值如何。这样做的原因是您可以稍后更改该值,如果 MySQL 必须找到更多空间来将小数值增长为大数值,则会导致其他类型的性能问题。
参见 http://dev.mysql.com/doc/refman/5.6/en/storage-requirements.html有关 MySQL 用于每种数据类型的字节数的更多信息。
异常(exception)情况是一些字符串数据类型(VARCHAR、VARBINARY、TEXT、BLOB),根据您实际使用的字符串的长度,每行使用可变数量的空间。
但是在 MySQL 中没有numeric 或date/time 大小不同的数据类型。
另一条评论:您应该问问自己在优化上花费了多少时间和精力,以及只获得更大的磁盘是否更经济。如果您有一个大型数据库,每个整数每行额外 4 个字节确实会加起来,但您需要存储数十亿行才能真正发挥作用。
关于mysql - 一个相当复杂的自增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20979601/
假设已经定义了一个 Point2D 类来存储具有 x 和 y 坐标(均为 double )的二维点。该类包括以下成员: 您的任务是通过添加适当的compareTo 方法将该类修改为Comparable
首先,设计:我需要某种树,其中每个节点可以有任意数量的子节点。每个节点携带一个有效负载。节点的总负载是特定节点的负载+其所有祖先直到根节点的负载。 预期在树上执行的操作有:插入、更新、删除(相当频繁)
如果您愿意,可以快速提问或发表意见。 我需要为数据库表生成一些 UUID。 自动递增键不会削减它,因为我还需要键在数据库和系统中是唯一的。 UUID 工作正常,但它的输出对于行将导出到的某些系统来说太
我这样写 map_tail 的尾递归版本: let map_tail f l = let rec map acc = function | [] -> List.rev acc |
我正在为我当前的项目编写自己的测试运行程序。一个特性(这可能在测试运行器中很常见)是每个测试用例都在子进程中执行,因此测试运行器可以正确检测并报告崩溃的测试用例。 我还想测试测试运行器本身,因此一个测
内存中的 H2 - 插入 - 错误 42000 尝试过版本 1.4.196、1.4.197、1.4.199。 我还尝试在 H2 服务器(本地)上执行 INSERT:也失败 给出错误的行:(抱歉,出于安
我正在评估从 Joda-Time 的使用中迁移我的项目到java.time package在 Java 8 。在 Joda-Time 中,我大量使用了 Interval类(class)。我在 java
我是 C# 新手 -- 不到 50 行代码。 所以问题是 C# 中的 ArrayList 是 Java 中 ArrayList 的一个很好的替代品。 以下是我注意到的一些差异: C# 中的 Array
我需要在一个包含将近 100 万条条目的表中进行查询,但有趣的部分只有前 500 条。 我想知道在查询行的末尾使用 Take() 方法是否是速度(和内存)优化方面的最佳选择,或者只是执行整个查询然后获
我从另一篇文章中读到,c++11 提供了闭包功能。据我了解,闭包非常类似于具有私有(private)成员和公共(public)方法的对象。如果不是,那么它有何不同? 最佳答案 闭包是一种从外部作用域访
我是一名优秀的程序员,十分优秀!