mysqlurl数据类型_sql-URL的最佳数据库字段类型
sql - URL的最佳数据库字段类型
我需要在MySQL表中存储⼀个url。 定义⼀个包含未确定长度的URL的字段的最佳做法是什么?
10个解决⽅案
281 votes
流⾏的Web浏览器中最低公分母最⼤URL长度:2,083(Internet Explorer)
VARCHAR列中的值是可变长度字符串。 长度可以指定为MySQL 5.0.3之前的0到255之间的值,5.0.3及更⾼版本中的0到65,535之间的值。 MySQL 5.0.3及更⾼版本中VARCHAR的有效最⼤长度受最⼤⾏⼤⼩(65,535字节,在所有列之间共享)和使⽤的字符集的限制。
所以......
< MySQL 5.0.3使⽤TEXT
要么
mysql创建表数据类型
> = MySQL 5.0.3使⽤VARCHAR(2083)
micahwittman answered 2019-02-09T18:17:57Z
32 votes
VARCHAR(512)(或类似)应该⾜够了。 但是,由于您实际上并不知道所讨论的URL的最⼤长度,我可能会直接转到TEXT.由于CLOBs⽐VARCHAR之类的简单字符串数据类型慢得多,因此当然存在效率损失。
Daniel Spiewak answered 2019-02-09T18:18:22Z
16 votes
⽤于SQL Server 2005的varchar(65535)
varchar(65535)适⽤于MySQL 5.0.3及更⾼版本
这将根据需要分配存储,不应影响性能。
Bob Probst answered 2019-02-09T18:19:01Z
9 votes
您需要根据URL的使⽤频率以及是否确实需要将长度保持为未绑定来在TEXT或VARCHAR列之间进⾏选择。
使⽤VARCHAR,maxlength> = 2,083,如micahwittman建议的:
您将在每个查询中使⽤⼤量URL(与TEXT列不同,VARCHAR与⾏内联存储)
您⾮常确定URL永远不会超过65,535字节的⾏限制。
使⽤TEXT如果:
URL确实可能会破坏65,535字节的⾏限制
您的查询不会⼀次(或经常)选择或更新⼀堆URL。 这是因为TEXT列只是内联指针,并且检索引⽤数据所涉及的随机访问可能很痛苦。
mrgrieves answered 2019-02-09T18:20:29Z
8 votes
您应该使⽤带有ASCII字符编码的VARCHAR。 URL是编码百分⽐,国际域名使⽤punycode,因此ASCII⾜以存储它们。 这将⽐UTF8使⽤更少的空间。
VARCHAR(512) CHARACTER SET 'ascii' COLLATE 'ascii_general_ci' NOT NULL
Flavio Tordini answered 2019-02-09T18:20:55Z
4 votes
⼤多数浏览器会让你在URL中放⼊⼤量数据,因此很多东西最终都会创建⾮常⼤的URL,所以如果你谈论的不仅仅是URL的域部分,你需要使⽤TEXT列,因为 VARCHAR / CHAR是有限的。
carson answered 2019-02-09T18:21:22Z
4 votes
笔记和警告
显然,Twitter⽅法更好,但是对于我的应⽤程序的需求,推荐URL缩短器就⾜够了。
URL缩短器有其缺点,例如安全性问题。 就我⽽⾔,这不是⼀个巨⼤的风险,因为URL不是公开的,
也没有⼤量使⽤; 然⽽,这显然不适合每个⼈。 似乎阻⽌了很多垃圾邮件和⽹络钓鱼URL,但我仍然建议谨慎。
请务必注意,您不应强迫⽤户使⽤⽹址缩短器。 对于⼤多数情况(⾄少对于我的应⽤程序的需求⽽⾔),500个字符对于⼤多数⽤户将使⽤它来说已经⾜够了。 仅针对过长链接使⽤/推荐URL缩短器。
CullenJ answered 2019-02-09T18:22:32Z
3 votes
我不知道其他浏览器,但IE7对HTTP GET操作有2083个字符限制。 除⾮任何其他浏览器具有下限,否则我不明⽩为什么你需要⽐2083更多的字符。
matt b answered 2019-02-09T18:23:00Z
1 votes
⼤多数Web服务器都有URL长度限制(这就是为什么“URI太长”的错误代码),这意味着有⼀个实际的⼤⼩。 到最流⾏的Web服务器的默认长度限制,并使⽤它们中的最⼤值作为字段的最⼤⼤⼩; 它应该绰绰有余。
CesarB answered 2019-02-09T18:23:26Z
1 votes
您最好使⽤varchar(max),其中(就⼤⼩⽽⾔)表⽰varchar (65535)。这甚⾄可以存储您更⼤的⽹址,也可以节省您的空间。
max说明符扩展了varchar的存储能⼒,  nvarchar和varbinary数据类型。 varchar(max),nvarchar(max)和  varbinary(max)统称为⼤值数据类型。 您可以  使⽤⼤值数据类型来存储最多2 ^ 31-1个字节的数据。
请参阅TechNet上有关使⽤⼤值数据类型的⽂章
sohaiby answered 2019-02-09T18:24:07Z

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。