【发布时间】:2015-02-24 13:42:45
【问题描述】:
有什么方法可以确定 SQL 查询在开始后何时结束?换句话说,有什么方法可以计算出在查询执行之前查询需要多长时间? (粗略估计没问题!)
ALTER IGNORE TABLE mytbl ADD UNIQUE (c);
我在有 3500 万条记录的 innodb 表上运行了这个查询。 c 是 varchar(255)
这个命令已经运行了 10 个小时,它仍然在运行。如果我接近尾声,我不想取消。
感谢您的帮助。谢谢!
【问题讨论】:
-
@ÁlvaroG.Vicario 它显示了自查询开始以来的持续时间。我的问题完全不同。我不明白你为什么要提到它?
-
没有。没有办法看到这一点,因为查询的运行时间取决于 mysql 本身以外的许多其他因素(如空闲 CPU 资源、空闲 RAM 等)。
-
@bksi - 原则上没有理由不能提供此信息。在 SQL Server 中,您可以通过查看 DMV 来了解有多少行已写入新索引中途,这有助于了解它有多远。
-
请注意SQL is turing complete,所以can't be possible 来决定一个任意命令是否会停止——或者,通过扩展,何时它会停止会这样做的。