3

我的 MySQL 数据库有两个数据库,我们称它们applebanana. apple有一张桌子,我们称之为mydata

> use apple;
Database changed

> SELECT * FROM mydata;
...
3379 rows in set (0.00 sec)

> SELECT mydata.* FROM mydata;
...
3379 rows in set (0.00 sec)

SELECT *当我在同一个数据库中使用时,一切正常。一旦我切换数据库,我就会得到奇怪的行为。

> use banana;
Database changed

> SELECT mydata.* FROM apple.mydata;
...
3379 rows in set (0.00 sec)

> SELECT * FROM apple.mydata;
[hangs!]

为什么会挂起?MySQL认为*导致它挂起的方法是什么,而mydata.*更具体并且不会导致挂起。

笔记:

  • 根据“SHOW FULL PROCESSLIST”,运行挂起查询的连接不是在运行命令,而是处于“睡眠”状态。
  • 这个问题是间歇性的:我的查询做了一年半,然后几个小时前都开始冻结。五分钟前,他们停止了冻结,目前没有问题。

任何想法为什么不合格SELECT *不运行,而合格的SELECT mydata.*立即运行?

谢谢,

乔纳森

4

0 回答 0