【问题标题】:longtext in select makes query extremely slow选择中的长文本使查询非常慢
【发布时间】:2016-05-31 13:18:15
【问题描述】:

我有一个具有以下结构的普通平桌

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 中运行良好,但需要很多时间。 如何更快地执行此查询并快速获取我的行?

【问题讨论】:

  • 每次都需要longtext栏吗?仅在需要时才使用单独的查询来检索它可能值得吗?
  • 不,我不是每次都需要。但是每当我需要该列时,它获取结果的速度太慢了。
  • 实际上只获取一条记录大约需要 3 秒。
  • max_allowed_pa​​cket=2048M 工作与否??

标签: mysql database database-administration


【解决方案1】:

我正在尝试同样的方法,最终遇到此类错误。 但是可能有一个解决方案可以增加my.ini 中的内存限制。

max_allowed_packet=2048M

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

【讨论】:

  • 嗨,我已经尝试过了,但这可以解决我加快选择速度的问题。感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 2015-03-18
  • 2021-06-15
  • 1970-01-01
  • 2020-01-10
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多