rails中字符串和文本之间的区别?

早过忘川 提交于 2020-02-27 11:36:06

我正在使用Rails创建一个新的Web应用程序,并且想知道, stringtext之间有什么区别? 什么时候应该使用?


#1楼

如上所述,不仅仅是db数据类型,如果你是脚手架,它也会影响将生成的视图。 string会生成一个text_field文本,会生成一个text_area


#2楼

字符串,如果大小固定,小,文本,如果它是可变的和大的。 这很重要,因为文本比字符串大。 它包含更多的千字节。

所以对于小字段总是使用字符串(varchar)。 字段如。 first_name,登录,电子邮件,主题(文章或帖子)和文本示例:帖子或文章的内容/正文。 段落的字段等

字符串大小1到255(默认值= 255)

文字大小1至4294967296(默认= 65536)2


#3楼

字符串转换为数据库中的“Varchar”,而文本转换为“text”。 varchar可以包含更少的项目,文本可以(几乎)任何长度。

有关参考资料的深入分析,请访问http://www.pythian.com/news/7129/text-vs-varchar/

编辑:某些数据库引擎可以一次加载varchar ,但将文本(和blob)存储在表之外。 使用text作为name时,使用varchar时, SELECT name, amount FROM products可能会慢得多。 而且由于Rails默认情况下使用SELECT * FROM...加载记录SELECT * FROM...您的文本列将被加载。 这可能永远不会成为您或我的应用程序中的真正问题(过早优化是......)。 但是知道文本并不总是“免费”是很好的。


#4楼

差异取决于如何在查询语言中将符号转换为其各自的列类型。

使用MySQL:string映射到VARCHAR(255) - http://guides.rubyonrails.org/migrations.html

:string |                   VARCHAR                | :limit => 1 to 255 (default = 255)  
:text   | TINYTEXT, TEXT, MEDIUMTEXT, or LONGTEXT2 | :limit => 1 to 4294967296 (default = 65536)

参考:

http://www.packtpub.com/article/Working-with-Rails-ActiveRecord-Migrations-Models-Scaffolding-and-Database-Completion

什么时候应该使用?

作为一般经验法则,使用:string用于短文本输入(用户名,电子邮件,密码,标题等),并使用:text用于更长的预期输入,例如描述,评论内容等。


#5楼

如果你正在使用postgres使用文本,除非你有一个大小约束,因为text和varchar没有性能损失

这三种类型之间没有性能差异,除了在使用空白填充类型时增加的存储空间,以及在存储到长度受限的列中时检查长度的一些额外CPU周期。 虽然character(n)在其他一些数据库系统中具有性能优势,但PostgreSQL没有这样的优势; 事实上,由于额外的存储成本,字符(n)通常是三者中最慢的。 在大多数情况下,应该使用文本或字符变化

PostsgreSQL手册

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!