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

时间:2015-08-12 11:08:00

标签: php mysql url joomla

我使用的是joomla 3.4,我已经为sef urls安装了sh404组件。我的数据库是utf8_general_ci,我的许多网址都是用希腊文编写的,这导致了一些非常长的网址。

今天我注意到有些网址坏了,所以在调查之后,我意识到sh404正在将这些网址存储在VARCHAR(255)列中。因此,一些网址(不多,但足以让我注意到200k网址)比列允许的更长并且存储不完整。除了明显的网址损坏和预期的500个服务器错误等问题之外,这会导致重复存储相同的破坏网址,因为sh404在存储之前看起来是否存储并且没有找到它(如存储的一个坏了)。在一个案例中,我有相同的网址存储超过5000次......

现在我的问题是这个。我应该只将VARCHAR长度增加到500(应该足以容纳任何URL,即使是我最极端的情况,也可以使用40 - 50),或者我应该通过音译改变我使用的组件的逻辑来生成这些URL他们,所以我的所有网址的大小减少了一半以上?这样做的缺点是我仍然需要输出所有必要的希腊语信息,为了做到这一点,我将不得不用php执行很多str_replaces。

我的网址是由一些包含希腊语产品信息的数据库字段的组合生成的。 Sh404拿起希腊语网址并将它们音译成英文,但原始网址太长了。如果我改变所有字段以包含相同的信息,已经音译,那么sh404将存储已经英文的网址,但数据库字段也将是英文,因此str_replaces。好处是这些值已知并且已修复,因此我不需要任何preg_replaces。

您认为更好的表现是什么?

当然将VARCHAR改为500更简单,但是如果它有利于我的表现,我就不在乎漫长的道路

1 个答案:

答案 0 :(得分:0)

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

如果它在MySQL 5.0.3之前,你将varchar更改为500选项将不起作用,你必须采取另一种方式。

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