Скрипт MYSQL не запускается, когда я использую переменную вместо прямого текста - PullRequest
1 голос
/ 31 марта 2011

Может быть, кто-то может помочь мне с одной проблемой.Когда я использую переменную (@ZZ) в скрипте, мой запрос зависает и не завершается.Если я использую прямой текст вместо переменной, тогда запрос выполняется нормально.Может кто-нибудь сказать мне, что не так с этой переменной?

SET @ZZ = 'asf:urhkgsdmbn.nbc,rtwyu:oneci_Xjhsdu_Hfduerksfgas20110322112751:462516432';
SET @XX = NULL;
USE some_schema;
SELECT SQL_NO_CACHE `hl`, @XX:=`id` FROM `doc` WHERE `uid` = @ZZ LIMIT 0,1;

1 Ответ

0 голосов
/ 01 апреля 2011

Просто слепое предположение, пока вы не получите что-то лучше ... Предложение WHERE оценивается для каждой строки, и у вас довольно много строк. Если он содержит литерал, оптимизатор SQL может упорядочить вещи таким образом, чтобы выражение оценивалось только один раз, и, возможно, он мог бы лучше использовать индексы. Однако, если он содержит переменную сеанса, ему, возможно, потребуется снова и снова читать переменную для каждой строки, поскольку она могла быть изменена.

: -

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