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