使用 LEFT() 函数查询性能不佳

1 mysql performance

我使用带有 LEFT 函数的 INNER JOIN 和 WHERE 来匹配记录的前 8 个字符。

INSERT INTO result SELECT id FROM tableA a
INNER JOIN tableB b ON a.zip=b.zip
WHERE LEFT(a.street,8)=LEFT(b.street,8)
Run Code Online (Sandbox Code Playgroud)

a.streetb.street被索引(部分索引8)。

查询未在 24 小时以上完成。我想知道索引是否有问题,或者是否有更有效的方法来执行此任务

Ric*_*haw 5

Mysql 不会对应用了函数的列使用索引。

其他数据库确实允许基于函数的索引。

您可以创建一个仅包含 a.street 和 b.street 的前 8 个字符的列并索引它们,这样事情会更快。