当前位置:  开发笔记 > 编程语言 > 正文

SQL Server - 将tinyint与enum一起使用

如何解决《SQLServer-将tinyint与enum一起使用》经验,为你挑选了1个好方法。

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

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

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

并插入:

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

(其中声明是a SQLCommand).

这样做会有效吗?这是正确的方法吗?我认为使用tinyint是可以的,因为可能的值不能那么多,但我不知道是否int会好,在性能方面更好,或者更常用,等等.



1> paparazzo..:

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

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

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有