我有一个有 4 列的大表(几乎 200 万条记录)。它们都是十进制的。
FIELD1 DECIMAL,
FIELD2 DECIMAL,
FIELD3 DECIMAL,
FIELD4 DECIMAL
FIELD1
是我的PK。
FIELD3
上面有一个索引。
我有删除查询的问题。
DELETE FROM MY_TABLE where FIELD1= <const>;
当我用 ssh 连接到服务器机器并运行命令时——它成功了!但是,我有一个带有 iBatis 命令的 java 进程,并且在运行相同的删除命令时 - 它在状态更新时卡在 MySQL 服务器上。
mysql> show processlist;
| Query | 278 | updating | delete from MYTABLE where FIELD1 = 'D' |
我尝试运行优化表和分析表,但没有帮助。我试图重新创建表格 - 但同样没有帮助。
可能是什么问题?为什么删除命令直接在服务器上成功?而不是在使用 iBatis 执行时?
我有另一个表,有类似的问题 - 那里 - 服务器上的删除需要很短的时间,但是从 iBatis 执行时需要 7 秒。去完成!!
可能是什么问题?我怎样才能改进那些删除命令???
更新:
我编写了一个简单的 java 进程(打开 jdbc 连接并执行语句),它在没有 iBatis 的情况下执行相同的“删除”命令 - 它运行完美!!
这意味着它与 iBatis 相关……它可能是什么?