tim*_*one 3 string postgresql ruby-on-rails rails-activerecord
我采用了一个Rails应用程序(Rails 3.2和Postgres 9.4),它有一些Rails字符串,我们已超过255限制.这个应用程序以前使用MySQL而不是Postgres作为后备存储.我的理解是postgres处理字符串和文本相同.它是否正确?在将所有Rails字符串迁移到文本之前,我们应该注意哪些限制?
性能问题是一个值得关注的问题,但不是主要问题.
从精细手册:
提示:这三种类型之间没有性能差异,除了使用空白填充类型时增加的存储空间,以及一些额外的CPU周期来检查存储到长度受限列中的长度.虽然
character(n)在其他一些数据库系统中具有性能优势,但PostgreSQL没有这样的优势; 事实上character(n),由于其额外的存储成本,通常是三者中最慢的.在大多数情况下text或character varying应该使用.
他们谈论的是三种类型char(n),varchar(n)和text.小费基本上是这样说的:
char(n) 由于空白填充而不得不检查长度约束是最慢的.varchar(n) 通常在中间,因为需要检查长度约束.text(AKA varchar没有n)通常是最快的,因为没有额外的开销.除了填补空白的char(n)和长度检查为char(n)和varchar(n),他们都处理的幕后相同.
随着ActiveRecord的,t.string是varchar和t.text是text.如果您的字符串没有任何硬性限制,那么只需使用t.textPostgreSQL即可.
| 归档时间: |
|
| 查看次数: |
2019 次 |
| 最近记录: |