MySQL基于文本字段加入2个表

时间:2014-05-20 17:55:56

标签: mysql sql

我有两个MySQL表:"list""more"

  

"列表"表有超过100,000个结果。

     

"更多"表有超过50,000个结果。

这些表格中的数据无法合并。

问题是,我有一个名为" short_title"在两个表中。它们都是VARCHAR(255)并且将包含类似"短标题 - 这里"的字符串。

我使用的简单查询如下:

SELECT L.title, M.more_info
FROM `list` L, `more` M
WHERE M.short_title = L.short_title

由于每个表中的结果太多,我需要根据" short_title"来匹配结果。作为文本字段的列,它使查询极其缓慢。

"short_title"表的"list"列上有一个INDEX,"short_title"表中的"more"列是UNIQUE

我能对列进行任何操作(例如:制作全文),这些会使这些查询更快吗?

提前谢谢

****更新****

我已将查询更改为INNER JOIN两个表格。

解释查询的结果可以在这里找到:

Results of the Explain Query

2 个答案:

答案 0 :(得分:0)

尝试索引short_title字段。

答案 1 :(得分:0)

这是您的查询(使用显式连接编写):

SELECT L.title, M.more_info
FROM list L join
     more M 
     on M.short_title = L.short_title;

您声明short_title被存储为text。您可以通过执行以下操作在其上创建常规索引:

create index more_short_title on more(short_title(255));

255是要编入索引的字节数。这应该可以加快查询速度。

另外,使用short_title之类的名称,为什么不使用varchar()列而不是text