string和文字之间的区别?
我正在使用Rails制作一个新的Web应用程序,并想知道, string
和text
什么区别? 什么时候应该分别使用?
区别在于符号如何在查询语言中转换为相应的列types。
与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)
参考:
什么时候应该使用?
作为一般的经验法则,使用:string
用于短文本input(用户名,电子邮件,密码,标题等)的:string
,并使用:text
获得较长的期望input,如描述,评论内容等。
如果你正在使用的文本使用文本,除非你有一个大小的限制,因为没有性能损失的文本vs varchar
这三种types之间没有性能差异,除了使用空白填充types时增加的存储空间以及在存储到长度受限的列时检查长度的一些额外的CPU周期。 虽然character(n)在其他一些数据库系统中具有性能优势,但在PostgreSQL中没有这样的优势; 实际上,字符(n)通常是三者中最慢的,因为其额外的存储成本。 在大多数情况下,应该使用文本或字符变化
PostsgreSQL手册
string转换为数据库中的“Varchar”,而文本转换为“文本”。 varchar可以包含更less的项目,文本可以(几乎)任意长度。
如需深入分析,请参阅http://www.pythian.com/news/7129/text-vs-varchar/
编辑:一些数据库引擎可以一次加载varchar
,但在表格之外存储文本(和blob)。 当name
使用text
时, SELECT name, amount FROM products
可能会比使用varchar
时慢很多。 而且由于Rails,默认情况下加载SELECT * FROM...
loggingSELECT * FROM...
您的文本列将被加载。 这可能永远不会成为你的或我的应用程序的真正的问题,但(过早优化是…)。 但知道文本并不总是“自由”是很好的知道。
正如上面所解释的那样,不仅仅是db数据types,它也将影响如果你脚手架将会生成的视图。 string将生成一个text_field文本将生成一个text_area
如果大小是固定的,则为string,如果大小可变,则为文本。 这是很重要的,因为文本比string大。 它包含更多的千字节。
所以对于小字段总是使用string(varchar)。 像。 名字,login名,电子邮件,主题(文章或文章)和文本示例:文章的内容/正文。 段落等领域
string大小1到255(默认值= 255)
文字大小1至4294967296(默认= 65536)2
使用较短字段的string,如姓名,地址,电话,公司
为更大的内容,评论,内容,段落使用文本。
我的一般规则是,如果是多于一行的话,我通常会去发短信,如果是短短的两到六个字,我就去找string。
string的官方规则是255。 所以,如果你的string超过255个字符,去文本。