0

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

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

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

例如,做一个简单的查询,开头是:

SELECT my_text_column FROM my_table LIMIT 1000

需要超过 30 秒。1/150 的桌子需要 30 秒,这真的很糟糕。

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

我可以做些什么来优化此列并确保我的所有查询都能快速进行?

编辑:

完整的表结构是`:

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 ;
4

2 回答 2

0

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

于 2013-02-21T01:23:54.213 回答
-1

你试过全文索引吗?与正常指数略有不同。msdn上有很多例子

于 2013-02-20T22:34:32.283 回答