优化具有大型文本列的表的查询(15k - 5000k)

时间:2012-12-13 15:04:22

标签: mysql web-crawler large-data

我的表:

CREATE TABLE `html` (
  `html_id` int(10) unsigned NOT NULL,
  `links_id` int(10) unsigned NOT NULL,
  `url` varchar(2000) DEFAULT NULL,
  `tld` varchar(10) DEFAULT NULL,
  ....
  `html` mediumtext  
  PRIMARY KEY (`html_id`,`links_id`),
  UNIQUE KEY `links_id_url_index` (`links_id`,`url`(255))
) DEFAULT CHARSET=utf8;
  • 它有>总共20 GB的数据(~1 mil行)
  • 查询主要用于统计信息,不需要html
  • ex:SELECT tld, MAX(URL), count(*) FROM html GROUP BY tld

该表还必须承受来自多线程c ++网络爬虫的许多插入(> 500 / s)(html_id,links_id)& (links_id,url(255))密钥检查,并且在此配置中它可以正常工作,但通过添加其他密钥,我担心它可能会降低它。

从我的所有测试中可以看出,大html列是查询速度慢的原因,最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

将html列移动到另一个表。另外,为什么要在varchar列上运行MAX()?