我有一张超过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 ;
答案 0 :(得分:0)
如果您的列值至少为50K,那么您发布的查询将检索50M结果集。如果是这样的话,花费很长时间就不足为奇了。
答案 1 :(得分:-1)
您是否尝试过全文索引?与正常指数略有不同。很多关于msdn的例子