Mysql 对于性能和可读性来说,什么更好:布尔类型或varchar的状态列?

Mysql 对于性能和可读性来说,什么更好:布尔类型或varchar的状态列?,mysql,database,laravel,Mysql,Database,Laravel,我正在创建一个laravel应用程序,一些表的状态列将只接收两个值:ACTIVE或INACTIVE 我想我有两个选择: 布尔值,在MySql上通常设置为tinyint(1) varchar,并设置ACTIVE或INACTIVE字符串值 最大的问题是我应该选择哪种类型: 第一个是较小的存储在数据库,如果我设置列名像是_积极是很容易在代码中使用,但会使数据库更难准备由人类 第二种方法需要在数据库中保存更多的空间,并在模型中保存一些类常量,以使事情更有条理,但会使数据库更易于人类(以及可能添加到项目

我正在创建一个laravel应用程序,一些表的状态列将只接收两个值:
ACTIVE
INACTIVE

我想我有两个选择:

  • 布尔值,在MySql上通常设置为
    tinyint(1)
  • varchar,并设置
    ACTIVE
    INACTIVE
    字符串值
  • 最大的问题是我应该选择哪种类型:

    • 第一个是较小的存储在数据库,如果我设置列名像是_积极是很容易在代码中使用,但会使数据库更难准备由人类

    • 第二种方法需要在数据库中保存更多的空间,并在模型中保存一些类常量,以使事情更有条理,但会使数据库更易于人类(以及可能添加到项目中的新开发人员)阅读

    我应该选择哪一个具有良好的性能和可读性

    编辑:


    我的问题是,与存储和性能问题相反,如果开发人员需要直接在数据库中编辑某些内容,那么他们阅读/理解数据库的难度/复杂性。

    您可以选择其中之一。但是如果你真的想在mysql中节省空间,你可以使用
    tinyInt(1)
    ,然后只需使用
    if条件
    ,为你的代码中的用户提供可读性。但是,如果你只想让开发人员可读,只需要使用注释就可以了


    希望有帮助

    最好使用
    enum
    而不是
    varchar
    enum
    的问题不是一个标准的sql类型,如果需要,使用Laravel会使事情很难更改。