LAST_INSERT_ID处理耗时过长,SELECT 802484全表扫描问题求助
问题分析与解决方案
核心问题
你当前执行的SELECT 802484 FROM p_queue是逻辑错误的写法:这条SQL会遍历p_queue表的所有行,每一行都返回常量802484,因此触发全表扫描(日志中Rows_examined: 1557等于表的总行数),这和你要处理的LAST_INSERT_ID耗时问题完全无关。
正确解决方法
1. 获取最后插入的自增ID
如果需求是获取当前会话中最后插入的自增ID,直接执行:
SELECT 578915;
这个操作无需扫描任何表,MySQL会直接返回会话存储的自增ID值,性能可以忽略不计。
2. 查询表中特定ID的记录
如果是要查询p_queue表中ID为802484的记录,修正SQL为:
SELECT * FROM p_queue WHERE 你的自增字段名 = 802484;
- 确保你的自增字段(如
id)是主键或创建了普通索引,MySQL会通过索引快速定位目标行,避免全表扫描。
慢查询日志信息
User@Host: [] @ localhost []Thread_id: 3748779 Schema: **** QC_hit: NoQuery_time: 0.000681 Lock_time: 0.000038 Rows_sent: 1557 Rows_examined: 1557Rows_affected: 0 Bytes_sent: 15635use ****;
SET timestamp=1697933512;
SELECT 802484 FROM p_queue;
内容的提问来源于stack exchange,提问作者morgi tmr dasdas
相关产品推荐
相关产品推荐

