我应该选择尽可能小的数据类型,或者如果我存储值 1,那么 col 数据类型是什么并不重要,并且该值将占用相同的内存大小?
问题也是,因为我总是必须转换它并在应用程序中玩耍。
更新
如果值为“a”,我认为 varchar(1) 和 varchar(50) 的内存大小相同,我认为 int 和 tinyint 相同,根据我理解的答案,它不是,是吗?
我应该选择尽可能小的数据类型,或者如果我存储值 1,那么 col 数据类型是什么并不重要,并且该值将占用相同的内存大小?
问题也是,因为我总是必须转换它并在应用程序中玩耍。
更新
如果值为“a”,我认为 varchar(1) 和 varchar(50) 的内存大小相同,我认为 int 和 tinyint 相同,根据我理解的答案,它不是,是吗?
始终选择尽可能小的数据类型。SQL 无法猜测您想要的最大值是多少,但是一旦您告诉它数据类型,它就可以优化存储和性能。
要回答您的更新:
varchar
确实只占用您使用的空间,所以当您说字符“a”将占用 1 个字节(在拉丁编码中)时,无论varchar
您选择多大的字段,您都是对的。SQL 中的任何其他类型的字段都不是这种情况。
但是,如果将所有内容都设为 varchar 字段,则可能会牺牲空间效率。如果一切都是固定大小的字段,那么 SQL 可以进行简单的常数时间乘法来找到您的值(如数组)。如果那里有 varchar 字段,那么找出数据存储位置的唯一方法是遍历所有先前的字段(如链表)。
如果您开始使用 SQL,那么我建议您不要使用 varchar 字段,除非您希望字段有时包含非常少量的文本,有时包含大量的文本(例如博客文章)。知道何时使用可变长度字段以达到最佳效果需要经验,即使我大部分时间都不知道。
这是系统设计特有的性能考虑。一般来说,一页 Sql Server 数据中可以容纳的数据越多,性能就越好。
Sql Server 中的一页为 8k。使用小整数而不是整数将使您能够将更多数据放入单个页面,但您必须考虑是否值得。如果您要每分钟提供数千次点击,那么是的。如果这是一个爱好项目或只有几十个用户会看到的东西,那没关系。
优势是存在的,但可能并不显着,除非您有很多行并且执行丢失操作。将有性能改进和更小的存储空间。