mysql 处理LAST_BLOG_ID的时间过长

5ssjco0h  于 12个月前  发布在  Mysql
关注(0)|答案(1)|浏览(88)

我遇到了一个问题,与LAST_BLOG_ID(),它检查所有行出于某种原因,并需要大量的时间来处理如何管理?
我还没有尝试过任何东西,在慢速查询日志中显示的是:

# User@Host: ****[****] @ localhost []
# Thread_id: 3748779  Schema: ****  QC_hit: No
# Query_time: 0.000681  Lock_time: 0.000038  Rows_sent: 1557  Rows_examined: 1557
# Rows_affected: 0  Bytes_sent: 15635
use ****;
SET timestamp=1697933512;
SELECT LAST_INSERT_ID() FROM p_queue;

字符串

xn1cxnb4

xn1cxnb41#

您正在为表p_queue的每一行查询LAST_INSERT_ID()
这是不必要的,因为LAST_INSERT_ID()返回的值不会改变,直到您将一行添加到具有自动递增主键的表中。
您应该只查询一行以获得不变表达式的结果。
在MySQL中,您可以通过以下方式之一执行此操作:

SELECT LAST_INSERT_ID();

SELECT LAST_INSERT_ID() FROM dual;

字符串
dual是一个假表,保证只有一行没有列。从dual查询与从真实的表查询一样,不需要任何开销。在MySQL中,这两个查询是等效的。支持dual表是为了与Oracle兼容。

相关问题