我爱的是2的力量。我庆祝我的32岁生日,知道这是32年来的最后一次,我能够宣称我的年龄是2的力量。我很痴迷。这就像是一些Z-list蝙蝠侠恶棍,除了没有丰富多彩的冒险和满脸的巴塔兰人。
我确保我的所有enum
值都是2的幂,如果仅用于将来的按位运算,并且我可以合理地确保有一些目的(即使是潜在的)正在做。
我不太确定,我在如何定义数据库字段的长度。再一次,我无法帮助它。一切都最终成为2的力量。
CREATE TABLE Person
(
PersonID int IDENTITY PRIMARY KEY
,Firstname varchar(64)
,Surname varchar(128)
)
任何知道存储和检索内容的内部人员的SQL超级boffins能否告诉我对我莫名其妙的痴迷是否有任何好处?以这种方式调整字符字段的大小是效率吗?任何人都可以使用“实际上,你正在做什么,因为......”?
我怀疑我的年纪越来越疯狂,但知道我的疯狂有一些方法会很好。
答案 0 :(得分:2)
好吧,如果我是你的同事并且我正在读你的代码,我不必使用SVN责备找出是谁写的。那太酷了。 :)
答案 1 :(得分:1)
两个唯一相关的权限是512
和4096
,它们分别是默认磁盘块大小和内存页面大小。如果您的总行长超过这些边界,那么可能会注意到不成比例的跳转和性能转储,如果您看起来非常接近。例如,如果您的行长度为513个字节,则需要读取单个行的块的两倍,而不是512个字节的行。
问题在于计算正确的行大小,因为内部存储格式没有很好地记录。
另外,我不知道SQL Server是否实际上保持行块对齐,所以无论如何你可能都不幸。
答案 2 :(得分:0)
使用varchar,您只存储了长度为+ 2的字符数。
通常,最大行大小为8060
CREATE TABLE dbo.bob (c1 char(3000), c2 char(3000), c31 char(3000))
Msg 1701, Level 16, State 1, Line 1
Creating or altering table 'bob' failed because the minimum row size would be 9007, including 7 bytes of internal overhead. This exceeds the maximum allowable table row size of 8060 bytes.
2个东西的力量坦率地说是非理性,这在程序员中并不好......