gpt4 book ai didi

sql - 在 SQL 中选择 CHAR 而不是 VARCHAR 的用例有哪些?

转载 作者:行者123 更新时间:2023-12-01 16:22:04 25 4
gpt4 key购买 nike

我意识到,如果我的所有值都是固定宽度,则建议使用 CHAR。但是,那又怎么样?为了安全起见,为什么不直接为所有文本字段选择 VARCHAR。

最佳答案

一般规则是,如果所有行的长度都接近相同,则选择CHAR。当长度变化显着时,选择VARCHAR(或NVARCHAR)。 CHAR 也可能更快一点,因为所有行的长度都相同。

它因数据库实现而异,但一般来说,VARCHAR(或NVARCHAR)除了实际数据之外还使用一两个字节以上的存储(用于长度或终止)。因此(假设您使用的是单字节字符集)存储单词“FooBar”

  • CHAR(6) = 6 字节(无开销)
  • VARCHAR(100) = 8 字节(2 字节开销)
  • CHAR(10) = 10 个字节(浪费 4 个字节)

底线是对于相对相同的数据,CHAR可以更快并且更节省空间长度(两个字符长度差以内)。

注意:Microsoft SQL 对于 VARCHAR 有 2 个字节的开销。这可能因数据库而异,但通常,至少需要 1 个字节的开销来指示 VARCHAR 上的长度或 EOL。

正如 Gaven 所指出的那样 在评论中:当涉及 multi-byte characters 时,事情就会发生变化。集,并且在这种情况下 VARCHAR 成为更好的选择。

关于 VARCHAR 声明长度的注意事项:因为它存储实际内容的长度,所以您不会浪费未使用的长度。因此,在 VARCHAR(6)、VARCHAR(100)、 VARCHAR(MAX) 中存储 6 个字符使用相同的存储量。详细了解使用 VARCHAR(MAX) 时的差异。您可以在 VARCHAR 中声明一个最大大小来限制存储的数量。

评论中AlwaysLearning指出Microsoft Transact-SQL docs似乎说相反。我认为这是一个错误,或者至少文档不清楚。

关于sql - 在 SQL 中选择 CHAR 而不是 VARCHAR 的用例有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com