Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将枚举存储为整数和字符串之间有区别吗?_Mysql_Ruby On Rails_Ruby - Fatal编程技术网

Mysql 将枚举存储为整数和字符串之间有区别吗?

Mysql 将枚举存储为整数和字符串之间有区别吗?,mysql,ruby-on-rails,ruby,Mysql,Ruby On Rails,Ruby,我应该费心将标题、性别和称呼等选项存储为整数,还是不相关,我可以将它们存储为字符串 class User < ActiveRecord::Base enumerize :gender, in: [:male, :female] TITLE = { dr: 0, prof: 1, prof_dr: 2 } def title TITLE.key(read_attribute(:title)) end def title=(t) write_attrib

我应该费心将标题、性别和称呼等选项存储为整数,还是不相关,我可以将它们存储为字符串

class User < ActiveRecord::Base
  enumerize :gender, in: [:male, :female]

  TITLE = { dr: 0, prof: 1, prof_dr: 2 }
  def title
    TITLE.key(read_attribute(:title))
  end

  def title=(t)
    write_attribute(:title, TITLE[t.to_sym])
  end
end
class用户

假设我有2000个用户,每个用户有6个可能的选项。

整数在数据库级别工作得更好,但请确保记住每个数字代表什么


字符串更容易使用,因为人类比数字更容易记住单词,这就是为什么我们使用URL而不是IP。

正如其他人所提到的,整数具有性能优势。这是否足够重要是另一个问题


我建议您在编写代码和开发API时,尽可能自然地进行操作。这将使您的代码对您自己(以及其他人,如果适用的话)更直观,并使您在开发中更有效率。

过去,当存储空间很昂贵时,有理由将字符串存储为数字。在这个时代,除了嵌入式应用程序(可能不应该运行rails)之外,没有必要这样做,特别是考虑到您的示例数据库大小为2000个用户

此外,如果将字符串存储为数字,则会有以下缺点:

  • 增加的代码复杂性
  • 没有代码就无法“读取”的数据库(完成了一些数据库端口并编写了rails作为后端数据分析的前端,这两者都变得非常重要。)

出于性能方面的考虑,请确保数据库密钥设置正确。

整数通常会提高性能,但字符串更易于使用。