Mysql 对于性能和可读性来说,什么更好:布尔类型或varchar的状态列?
我正在创建一个laravel应用程序,一些表的状态列将只接收两个值:Mysql 对于性能和可读性来说,什么更好:布尔类型或varchar的状态列?,mysql,database,laravel,Mysql,Database,Laravel,我正在创建一个laravel应用程序,一些表的状态列将只接收两个值:ACTIVE或INACTIVE 我想我有两个选择: 布尔值,在MySql上通常设置为tinyint(1) varchar,并设置ACTIVE或INACTIVE字符串值 最大的问题是我应该选择哪种类型: 第一个是较小的存储在数据库,如果我设置列名像是_积极是很容易在代码中使用,但会使数据库更难准备由人类 第二种方法需要在数据库中保存更多的空间,并在模型中保存一些类常量,以使事情更有条理,但会使数据库更易于人类(以及可能添加到项目
ACTIVE
或INACTIVE
我想我有两个选择:
tinyint(1)
ACTIVE
或INACTIVE
字符串值- 第一个是较小的存储在数据库,如果我设置列名像是_积极是很容易在代码中使用,但会使数据库更难准备由人类
- 第二种方法需要在数据库中保存更多的空间,并在模型中保存一些类常量,以使事情更有条理,但会使数据库更易于人类(以及可能添加到项目中的新开发人员)阅读
我的问题是,与存储和性能问题相反,如果开发人员需要直接在数据库中编辑某些内容,那么他们阅读/理解数据库的难度/复杂性。您可以选择其中之一。但是如果你真的想在mysql中节省空间,你可以使用
tinyInt(1)
,然后只需使用if条件
,为你的代码中的用户提供可读性。但是,如果你只想让开发人员可读,只需要使用注释就可以了
希望有帮助 最好使用
enum
而不是varchar
。enum
的问题不是一个标准的sql类型,如果需要,使用Laravel会使事情很难更改。