【发布时间】:2015-02-12 09:59:49
【问题描述】:
我有简单的 MyISAM 表进行搜索,我在其中为搜索文本索引了全文搜索离子“search_text”
表结构:
CREATE TABLE IF NOT EXISTS `product_search` (
`dept_id` int(11) unsigned NOT NULL DEFAULT '0',
`product_id` int(11) NOT NULL DEFAULT '0',
`search_text` longtext,
FULLTEXT KEY `search` (`search_text`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
查询:
SELECT p.product_id
, p.dept_id
FROM product_search p
WHERE (MATCH(search_text) AGAINST('fathers day') AND 1 )
GROUP BY product_id LIMIT 50
使用 group by 大约需要 10-12 秒
没有分组需要 0.0086 秒
当我用解释检查查询时 查询说明:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE p fulltext search search 0 1 Using where; Using temporary; Using filesort
在这种情况下我该怎么办?
【问题讨论】:
-
您的
EXPLAIN输出访问表v_cat_pro,而您的查询仅访问product_search(别名为p)。无论如何,您的EXPLAIN输出表明 MySQL 认为它只需要检查单行——如果这需要 10-12 秒来执行,那么听起来有些东西已经严重损坏了。 -
对不起,我忘记在解释中更改别名,现在我编辑了它..,我如何找到损坏的.. 因为它大约 2 gb 数据和 1 gb 全文索引
标签: mysql indexing group-by full-text-search