select中的longtext使查询速度极慢

时间:2016-05-31 13:18:16

标签: mysql database database-administration

我有一个结构如下的普通平台

CREATE TABLE `oc_pipeline_logging` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `source` TEXT,
  `comments` TEXT,
  `data` LONGTEXT,
  `query` TEXT,
  `date_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `ip` VARCHAR(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MYISAM AUTO_INCREMENT=20 DEFAULT CHARSET=latin1

在这个表中,我基本上记录了我在代码中的所有错误。 现在,上表中的data列定义为longtext,目前我在此列中拥有的数据,每条记录的数据几乎为32Mb size

所以现在当我使用普通的选择查询时,它花了很多时间来获取结果。

例如: -

SELECT * FROM oc_pipeline_logging limit 10

事实上,当我在终端中运行上述查询时,我收到的错误

mysql> SELECT COMMENTs,DATA FROM oc_pipeline_logging WHERE id = 18;
ERROR 2020 (HY000): Got packet bigger than 'max_allowed_packet' bytes

但是在sqlYog中运行正常但需要花费大量时间。 如何更快地执行此查询并快速获取行?

1 个答案:

答案 0 :(得分:0)

我正在尝试同样的方式来获得这种类型的错误。 但是可以有一个解决方案来增加my.ini中的内存限制。

max_allowed_packet=2048M

您可以相应地更改限制,希望这可以解决问题。