![]() |
1
6
因为计算机(和数据库)是愚蠢的。电脑猜得不太准,除非你告诉他们,否则他们无法判断一个专栏将被用来写一个电话号码或一本《战争与和平》。显然,DB的设计可以使每一列都可以包含无限量的数据——或者至少是磁盘空间允许的数据量——但这将是一个非常低效的设计。为了提高效率,我们做了一个权衡,让设计者告诉数据库我们希望在列中输入多少。可能有一个默认值,如果您不指定,它只会使用它。不幸的是,从效率的角度来看,任何违约都可能不适合绝大多数人。 |
![]() |
2
2
这和速度有关。如果指定了字符串的最大大小,则可以优化信息的存储方式,以便更快地对其进行i/o。当速度是关键的时候,你最不希望的事情就是因为你把一个州的缩写改成了全名而突然对你所有的数据进行洗牌。 设置最大大小后,数据库可以将最大空间分配给该列中的每个实体,而不考虑对值的更改,也不需要更改地址空间。 |
![]() |
3
1
This post
不仅回答了你关于是否使用
|
![]() |
4
1
这就像在说,为什么我们不能告诉数据库我们想要一个表,让它从我们提供的数据中推断出我们需要什么类型和多少列呢。 简单地说,我们比数据库更清楚。假设你有百万分之一的机会把一个2000个字符的字符串放入数据库,大多数时候,它是100个字符。数据库可能会破坏或拒绝2k字符串。如果前三年你只输入了100个长度的字符串,它根本不知道你需要2k的长度。
|
![]() |
5
0
如果RDBMS每次添加、更新和删除时都将列的数据长度更改为固定的数字(例如,所有行的最大长度)。这是一个非常耗时的过程 |
![]() |
6
0
|
![]() |
7
0
|
![]() |
8
0
作为一个例子,我将进入一些流沙,并建议您将其与分配内存(RAM)的应用程序进行比较。为什么程序员不在程序启动时要求/分配他们需要的所有内存呢?因为他们常常不知道自己需要多少。这会导致应用程序在运行时占用越来越多的内存,也许还会释放内存。你有多个应用程序同时运行,新应用程序启动,旧应用程序关闭。而且应用程序总是需要连续的内存块,如果它们的内存分散在整个地址空间,那么它们的工作就会很差(如果有的话)。随着时间的推移,这会导致碎片化的记忆,以及人们几十年来一直在撕扯的垃圾收集问题。 跳回数据库。你想让你的硬盘发生这种情况吗(记住,硬盘性能是非常重要的, 非常 与内存操作相比速度慢……) |
![]() |
9
0
听起来您的业务规则是:在任何文本框中输入您想要的信息,这样您就不会对DBA生气。 你不允许用户输入5000个字符的地址,因为它们不能放在信封上。
|
![]() |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
SoT · SQL Server中求和函数的工作方式 2 年前 |
![]() |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
![]() |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
![]() |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |