从搜索/速度角度创建一个列类型更好的表格?
对于某些表,我需要一个名为Status
的列。我通常将此int32
存储在数据库中,然后使用类在我的代码中引用它:
public static int Published = 1;
public static int Draft = 0;
public static int Deleted = -1;
将此列用作varchar
代替是否存在很大的速度差异?
public static string Published = "Published";
public static string Draft = "Draft";
public static string Deleted = "Deleted";
我更喜欢第二个varchar
方法,因为它有助于数据库中的可读性,然后我不必经常将int状态代码转换为供人类使用的字符串。
任何帮助将不胜感激
答案 0 :(得分:2)
作为最佳实践,您应该选择最窄的列。列越窄,SQL Server必须存储的数据量越少,SQL Server能够读取和写入数据的速度就越快。此外,如果在列上创建任何索引,索引大小将更窄,因此整体性能将受到积极影响。
由于您的列设计为仅包含数字,因此请使用数字数据类型,例如INTEGER
,而不是VARCHAR
或CHAR
数据类型。数字数据类型需要较少的空间来保存与字符数据类型相同的数值。这有助于减小列的大小,并且可以在搜索列(WHERE子句),连接到另一列或排序时提高性能。
此外,如果要将列中的值存储为数字-1,1到10,则TINYINT
数据类型更适合INT
数据类型。
希望这会有所帮助!!