首页 文章

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

提问于
浏览
0

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

“列表”表格有超过100,000个结果 . “更多”表的结果超过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" 列上有一个INDEX, "more" 表中的 "short_title" 列是UNIQUE

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

先感谢您

更新

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

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

Results of the Explain Query

2 回答

  • 0

    尝试索引short_title字段 .

  • 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

相关问题