Запрос к переменной varchar в несохраненном скрипте внутри MySQL Workbench не использует индекс? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть таблица с VARCHAR(20) как неуникальный индекс.Если я объявляю переменную для нее с SET @varname = "XYZ", индекс не используется.

Я пытался изменить "" на '', я пытался изменить = на := в операторе SET, Я попытался использовать = и LIKE для своего запроса.

CREATE TABLE `table_name` (
  `ColumnID` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `Time` DATETIME NOT NULL,
  `indexed_varchar_field ` VARCHAR(20) DEFAULT NULL,  
  UNIQUE KEY `ColumnID` (`ColumnID`),
  KEY `idx_varchar_field` (`indexed_varchar_field `)
) ENGINE=InnoDB AUTO_INCREMENT=20268516 DEFAULT CHARSET=utf8;

SET @VAR_NAME = 'XYZ';
SELECT * FROM table_name WHERE indexed_varchar_field = @VAR_NAME;

В фактической таблице больше столбцов, indexed_varchar_field - это серийный номер, и я хочу получить все наборы данных с этого компьютера,Без индекса это занимает больше минуты, а с индексом - меньше секунды.

Если я попробую без переменной, он использует индекс и работает быстро.

...