Shi*_*mmy 3 sql sql-server int tinyint sqldatatypes
我应该选择尽可能小的数据类型,或者如果我存储值 1,那么 col 数据类型是什么并不重要,并且该值将占用相同的内存大小?
问题还在于,因为我总是必须转换它并在应用程序中使用。
更新
我认为如果 value 是“a”,则 varchar(1) 和 varchar(50) 的内存大小相同,我认为 int 和tinyint 是相同的,根据我理解的答案,它不是,是吗?
始终选择尽可能最小的数据类型。SQL 无法猜测您想要的最大值是多少,但一旦您告诉它数据类型,它就可以优化存储和性能。
回答您的更新:
varchar确实只占用您使用的空间,所以当您说字符“a”将占用 1 个字节(采用拉丁编码)时,无论varchar您选择多大的字段,您都是对的。SQL 中任何其他类型的字段都不会出现这种情况。
但是,如果将所有内容都设为 varchar 字段,则可能会为了空间而牺牲效率。如果所有内容都是固定大小的字段,那么 SQL 可以执行简单的常量时间乘法来查找您的值(如数组)。如果其中有 varchar 字段,那么找出数据存储位置的唯一方法是遍历所有先前的字段(如链接列表)。
如果您刚开始使用 SQL,那么我建议您远离 varchar 字段,除非您期望字段有时包含非常少量的文本,有时包含非常大量的文本(例如博客文章)。需要经验才能知道何时使用可变长度字段才能达到最佳效果,即使我大多数时候也不知道。
| 归档时间: |
|
| 查看次数: |
1296 次 |
| 最近记录: |