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

标签 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)

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

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

最佳答案

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

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

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

关于mysql - 使用 LEFT() 函数的查询性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22105364/

相关文章:

具有多个 union 和 group by 的 MySQL 查询

MYSQL MAX和Min查询

.NET 依赖注入(inject)自动注册与性能

java - 静态变量的内存范围

java - 如何修复: “No suitable driver found for jdbc:mysql://localhost/dbname”

mysql - 我如何知道哪个 MySQL 进程创建了临时文件以及临时文件是否仍在使用中?

c# - IF 语句查询语法错误

java - 如何快速找到较长的单个位集的位置

regex - 使正则表达式更高效

performance - Neo4j super 节点问题 - 扇出模式