次のストアド プロシージャがあります。
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
インデックスを適切に使用していないクエリとしてファイルに記録されています。この手順は非常に頻繁に使用されるため、不適切なインデックス作成を回避できれば幸いです。それを達成するために書き直すことは可能ですか?