У меня есть таблица с 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
- это серийный номер, и я хочу получить все наборы данных с этого компьютера,Без индекса это занимает больше минуты, а с индексом - меньше секунды.
Если я попробую без переменной, он использует индекс и работает быстро.