我遇到了一个问题,与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;
字符串
1条答案
按热度按时间xn1cxnb41#
您正在为表
p_queue
的每一行查询LAST_INSERT_ID()
。这是不必要的,因为
LAST_INSERT_ID()
返回的值不会改变,直到您将一行添加到具有自动递增主键的表中。您应该只查询一行以获得不变表达式的结果。
在MySQL中,您可以通过以下方式之一执行此操作:
字符串
dual
是一个假表,保证只有一行没有列。从dual
查询与从真实的表查询一样,不需要任何开销。在MySQL中,这两个查询是等效的。支持dual
表是为了与Oracle兼容。