Mysql 如何重写查询以避免使用索引记录为日志\u查询\u而不是\u
我有以下存储过程:Mysql 如何重写查询以避免使用索引记录为日志\u查询\u而不是\u,mysql,logging,stored-procedures,indexing,Mysql,Logging,Stored Procedures,Indexing,我有以下存储过程: CREATE PROCEDURE testProc(IN p_idProject INTEGER) BEGIN DECLARE nowTime DATETIME; SET @nowTime = NOW(); SELECT idCustomer FROM NextCalls WHERE @nowTime-nextCall = (SELECT MAX(@nowTime - nextCall) F
CREATE PROCEDURE testProc(IN p_idProject INTEGER)
BEGIN
DECLARE nowTime DATETIME;
SET @nowTime = NOW();
SELECT
idCustomer
FROM NextCalls WHERE @nowTime-nextCall =
(SELECT MAX(@nowTime - nextCall)
FROM NextCalls
WHERE idProject = p_idProject AND nextCall < @nowTime)
LIMIT 1;
END $$
在nextCall列上设置了索引。不幸的是,它作为一个查询登录到mysql-slow.log文件中,没有正确使用索引。这个过程经常被使用,我非常乐意避免糟糕的索引。是否可以重写以实现此目的?您只需选择最旧的下一个调用。无需执行任何计算,您只需通过以下方式使用ORDER:
我是瞎了-这么明显的解决办法:Thx。顺便说一句,你忘记了当前时间戳中的E。找到最简单的解决方案通常并不容易
SELECT idCustomer
FROM NextCalls
WHERE idProject = p_idProject AND nextCall < CURRENT_TIMESTAMP
ORDER BY nextCall
LIMIT 1