SQL Server - 将 tinyint 与枚举一起使用

本文关键字:枚举 一起 tinyint Server SQL | 更新日期: 2023-09-27 17:56:45

>假设我有一个SQL Server数据库,除其他表外,还有一个名为Mail的表,该表具有与之关联的预期收件人,发件人,邮件正文等,其中之一是属性Priority,它基本上指示邮件的发送优先级是高,正常还是低。由于我只会使用这些少量值(如果要添加更多值,也不会那么多),因此我决定将优先级设置为tinyint类型,而在我的代码中,我将表示为enum类型。

我的问题是,调用数据库时插入和检索此属性的正确方法是什么?在检索的情况下(使用DataRow),我有:

mail.Priority = (MailPriority)(byte)row["Priority"];

对于插入:

parameter = new SqlParameter("@Priority", SqlDbType.TinyInt);
parameter.Value = (byte)mail.Priority;
statement.Parameters.Add(parameter);

(其中语句是SQLCommand)。

那么这行得通吗,这是正确的方法吗?我认为使用 tinyint 就可以了,因为可能的值不能那么多,但我不知道int会很好,在性能方面更好,还是更常用,等等。

SQL Server - 将 tinyint 与枚举一起使用

性能和空间是不一样的。
从性能角度来看,.NET 实际上可以更快地访问 Int32。
您得到的是SQL中的空间节省。
你还应该将枚举定义为字节。

public enum enumSVMV : byte { SV = 0, MV = 1, none = 2 };