更新后mysql低速替换字符串

时间:2017-01-05 12:11:59

标签: mysql

有500k k2篇文章(joomla),localhost,xampp,joomla 3, 一切都很好,无论是网站还是网站。 mysql管理员,

我刚做了一个更新字符串(需要3个小时才能完成):

UPDATE `#_k2_items` SET `introtext`= replace(`introtext`, '_70.jpg', '_140.jpg')
然后速度急剧下降(无论是网站还是mysql管理员)。

1 - 现在该做些什么来提高速度?

2-如果我改变了表'id'类型的类型(因为我有最多2百万行),速度会不会有任何增加?

1 个答案:

答案 0 :(得分:0)

您的MySQL表格已经大量更新,可能需要optimized.

您可能可以通过托管服务访问phpmyadmin。

如果是这样,您可以尝试优化表格。

首先,备份您的数据库。如果您不知道如何做到这一点,请立即停止,在做其他任何事情之前了解如何操作。 (或者你可能会后悔等等)

然后转到phpmyadmin,选择要修复的表,然后单击" Operations"标签

您将找到“表操作”面板。它有一个Optimize链接。点击它。

或者,您可以发出SQL查询

OPTIMIZE TABLE `#_k2_items`;  

请注意,这可能需要一段时间,如果有的话,您的网站将无法正常运行。

如果必须再次执行此类操作,请使用WHERE子句来更新表中的每一行。像这样的东西可以解决这个问题。

 UPDATE `#_k2_items` SET `introtext`= replace(`introtext`, '_70.jpg', '_140.jpg')
  WHERE introtext LIKE '%_70.jpg%'

没有WHERE子句,MySQL改变了表的每一行。 replace()操作不执行任何操作的操作将列更改为相同的值。但它仍然改变了它。这就是为什么操作花了这么长时间并扰乱了桌子的优化。