2代表我有两个MySQL表:"list"
和"more"
MySQL的加入基于文本字段
“列表”表有向上10万条。
“更多”表有超过50,000个结果。
来自这些表的数据不能组合。
问题是,我在这两个表中都有一个名为“short_title”的列。它们都是VARCHAR(255),并且会包含一个像“short-title-here”这样的字符串。
我用一个简单的查询,如:
SELECT L.title, M.more_info
FROM `list` L, `more` M
WHERE M.short_title = L.short_title
由于在每个表这么多的成果,我需要基于“short_title”列这是一个文本字段中的匹配结果它使查询极其缓慢。
有关于在"list"
表"short_title"
列的索引,并在我的"more"
表"short_title"
列是唯一
有什么我可以做的到列(例如:使它们全文),这将使这些查询更快?
预先感谢您
**** ****更新
我已经改变了我的查询INNER JOIN两个表。
的解释查询的结果可以在这里找到:
由于您正在比较列的相等性,我不认为您需要全文功能......只要确保在两个表的short_title列上都有一个索引即可。 – Frazz
谢谢,但我在列表中的''short_title''列已经包含一个INDEX,并且''more''表中的''short_title''列被设置为UNIQUE - 如果我添加一个指数,phpMyAdmin提醒我,我不应该在同一列有两个INDEXes – user1298740
你确定索引统计数据是否更新?如果不是,引擎可能无法正确使用您的索引。查询执行需要多长时间?你有解释计划来向我们展示吗?只是要检查正在使用的索引。另外...你是否尝试了INNER JOIN语法而不是旧的多元WHERE语法? – Frazz