Как получить план запроса из подготовленного отчета - PullRequest
4 голосов
/ 24 августа 2009

Я не помню, чтобы когда-либо видел способ использовать подготовленные операторы из консоли и почему-то не думаю, что выполнение запроса объяснения, поскольку подготовленный оператор из API получит то, что я хочу.

Это связано с моим старым вопросом .

Меня в первую очередь интересует MySQL, но я бы заинтересовался и другими БД.

Ответы [ 2 ]

2 голосов
/ 24 августа 2009

Согласно проведенному мною краткому исследованию, я не вижу способа его получить. В идеале реальный план выполнения должен генерироваться после предоставления переменных. Таблицы поиска могут быстро устранить фактически выполняющийся запрос, если константа отсутствует. Идеальный план выполнения должен учитывать частоту возникновения. Насколько я понимаю, MySQL, по крайней мере, используется для подготовки плана выполнения, когда инструкция подготовлена ​​для проверки выражения. Затем, когда вы выполняете его, он генерирует другой план объяснения.

Я полагаю, что план объяснения временно размещен в таблице в MySQL, но быстро удаляется после его использования.

Я бы предложил спросить в списке внутренних объектов MySQL.

Удачи,

Jacob

0 голосов
/ 19 октября 2018

"Ты не можешь"

https://dev.mysql.com/doc/internals/en/prepared-stored-statement-execution.html

Это в основном говорит о том, что план выполнения, созданный для подготовленного оператора во время компиляции, не используется. Во время выполнения, когда переменные связаны, он использует значения для создания нового плана выполнения и использует его.

Это означает, что если вы хотите знать, что он будет делать, вы можете взять запрос, который вы намеревались подготовить, присвоить ему значения, которые вы с ним свяжете, и EXPLAIN PLAN этот запрос завершится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...