关于sql:mysql regexp查询挂起,但是mysql进程重启时显示结果

mysql regexp query hangs, but displays results when mysql process restarts

我有两张桌子。 Table1 是 1000 万行,Table2 是 100 万行。我需要用正则表达式搜索 Table2,然后加入这些表。

当我这样做时:

1
2
3
4
SELECT * FROM table2
LEFT JOIN table1
ON table1.ID1=table2.ID2
WHERE table2.column REGEX 'regexp'

查询永远不会结束。

但是,当我杀死 mysqld 进程时,它会显示结果(在 PHPMyAdmin 中),显示的执行时间仅为 0.07 秒。

如果我使用 LIKE 代替 REGEXP 没有问题,如果我单独在 table2 上使用 REGEX 也没有问题。

ID1


原来整个问题是两个表中的 ID 字段属于不同的类型(mediumint 与 int)。一旦我将它们都更改为 int,查询速度很快。
由于引擎是 MyISAM,因此我无法使用可能会让我更快意识到问题的外键。