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作为后端数据分析的前端,这两者都变得非常重要。)
出于性能方面的考虑,请确保数据库密钥设置正确。整数通常会提高性能,但字符串更易于使用。