繁体   English   中英

增加VARCHAR长度或使用php处理问题?

[英]Increase VARCHAR length or handle the issue with php?

我正在使用joomla 3.4,并且已经为sef url安装了sh404组件。 我的数据库是utf8_general_ci,我的许多URL都是从希腊语编码的,这导致了一些非常长的URL。

今天,我注意到某些网址已损坏,因此在调查之后,我意识到sh404将这些网址存储在VARCHAR(255)列中。 因此,某些网址(不是很多,但足以让我注意到200k网址中的网址)长于该列所允许的长度,并且存储不完整。 除了明显的URL损坏问题和预期的500个服务器错误等问题之外,这还会导致重复存储相同的URL损坏,因为sh404在存储它之前会先检查是否已存储它,但找不到它(就像存储的一样)被打破)。 在一种情况下,我将相同的网址存储了5000次以上……

现在我对你的问题是这个。 我应该将VARCHAR长度增加到500(应该足以容纳任何URL,即使是最极端的情况,也要保留40-50),还是应该通过音译来更改生成这些URL所使用的组件的逻辑它们,从而将我所有URL的大小减少一半以上? 不利的一面是,我仍然必须用希腊语输出所有必要的信息,为了这样做,我将不得不用php执行很多str_replaces。

我的网址是由一些包含希腊文产品信息的数据库字段组合生成的。 Sh404提取希腊网址并将其音译为英语,但是原始网址太长。 如果我将所有字段都更改为包含相同的信息(已经音译),则sh404将以英语存储URL,但是db字段也将以英语存储,因此为str_replaces。 好消息是这些值是已知的并且是固定的,因此我不需要任何preg_replaces。

您认为更好的性能明智的选择是什么?

当然,将VARCHAR更改为500会更简单,但是如果它会提高我的性能,我不在乎走很长的路

取决于您使用的是哪个mysql版本?

如果它在MySQL 5.0.3之前,则将varchar更改为500选项将不起作用,而您必须采用其他方法。

如果它是5.0.3或更高版本,则可以,将varchar更改为500可以正常工作,与在整个项目中更改逻辑相比,它对性能的影响很小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM