Mysql:使用大文本类型字段进行慢查询时出现问题

时间:2013-02-20 22:06:41

标签: mysql phpmyadmin

我有一张超过150k行的表。表中的一列有“文本”类型。该字段包含超过50k字符的文本。这意味着我有150k块文本,该列中存储了超过50k字符。

该文本是不同网页的HTML源代码。因此,我不能使用varchar类型,因为我需要保留换行符。

在执行查询选择此列的位置或WHERE子句中时,查询非常慢并且需要永远完成。

例如,执行以:

开头的简单查询
SELECT my_text_column FROM my_table LIMIT 1000

需要30多个小时。对于1/150的表来说,有30个秒,这真的很糟糕。

我尝试在此列中添加INDEX,但似乎无法将INDEX添加到文本类型列。

如何优化此列并确保我的所有查询都能快速完成?

编辑:

完整的表结构是`:

CREATE TABLE IF NOT EXISTS `my_table` (
  `url_id` int(10) NOT NULL AUTO_INCREMENT,
  `url` varchar(500) NOT NULL,
  `source` text NOT NULL,
  `completed` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`url_id`),
  KEY `completed` (`completed`),
  KEY `url` (`url`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=150775 ;

2 个答案:

答案 0 :(得分:0)

如果您的列值至少为50K,那么您发布的查询将检索50M结果集。如果是这样的话,花费很长时间就不足为奇了。

答案 1 :(得分:-1)

您是否尝试过全文索引?与正常指数略有不同。很多关于msdn的例子