【发布时间】: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_packet=2048M 工作与否??
标签: mysql database database-administration