У меня есть следующий запрос, который требует времени. Тип Mytable является innodb и имеет первичный ключ в поле tsh_id . Я также добавил индекс в поле transaction_IdMysql запрос innodb, возвращающий медленный результат
следующее - это реализация внутри моей базы данных хранимой процедуры.
DECLARE lv_timestamp DATETIME(3);
SET @lv_timestamp = NOW(3);
IF(mycondition) then
SET @lv_Duration :=(SELECT UNIX_TIMESTAMP (@lv_timestamp) - UNIX_TIMESTAMP (`changedon`)
FROM `MyTable`
WHERE transaction_Id = _transaction_Id
ORDER BY tsh_id DESC
LIMIT 1)
End if;
Пожалуйста, предложите какой-либо улучшение
Edit:
Объясните запрос говорит
"select_type":"SIMPLE",
"table":"MyTable",
"type":"ref",
"possible_keys":"IX_MyTable_Transaction",
"key":"IX_MyTable_Transaction",
"key_len":"98",
"ref":"const",
"rows":1,
"Extra":"Using where"
Что работает 'EXPLAIN' на запрос должен сказать? –
Я отредактировал свой вопрос и подробно расскажу, что объясняет говорит –
Я не могу сразу увидеть объяснение, что запрос сам по себе должен быть медленным. Может быть, кто-то еще с большим опытом оптимизации mysql будет иметь некоторый вклад. –