【发布时间】:2012-02-09 20:12:11
【问题描述】:
您好,我有一个 cmets 表,我在该表上运行全文搜索。 c1 和 c2 是使用的同一个表上的别名 通过标准:c1.parent_id=0 我只得到问题(不是附在他们身上的答案) 并通过 c2.parent_id0 我过滤已经有答案的问题
SELECT DISTINCT c1.comment, c1.comment_id, MATCH(c1.comment) AGAINST ('keyword1 keyword2 keyword3') AS score
FROM comments AS c1
JOIN comments AS c2
ON c1.comment_id = c2.parent_id
WHERE c1.parent_id=0
and c2.parent_id <> 0
ORDER BY score DESC LIMIT 9
问题是,当我运行 EXPLAIN SELECT... 时,搜索会查找表的每一行 - 所以它越大,这个操作就越慢,而不是只搜索 parent_id=0 的行.
我想问一下:这种查询是否可以进一步优化?
【问题讨论】:
-
能否提供完整的表定义和 EXPLAIN 输出?
标签: mysql optimization indexing full-text-search