我有两个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两个表格。
解释查询的结果可以在这里找到:
答案 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
?