我的 MySQL 数据库有两个数据库,我们称它们apple
为banana
. 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.*
立即运行?
谢谢,
乔纳森