Я определил таблицу как
CREATE TABLE `mytable` (
`identifier` varchar(45) NOT NULL,
`f1` char(1) NOT NULL,
KEY `identifier` (`identifier`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
, а затем добавили первичный ключ и индекс как
ALTER TABLE `mytable` ADD PRIMARY KEY ( `identifier` )
ALTER TABLE `mytable` ADD INDEX ( `identifier` )
В поле идентификатора моя таблица заполняется значениями вроде (около 800 000 записей)
USER01-TESTXXY-CAD-10172
USER01-TESTXXY-CAD-1020
USER01-TESTXXY-CAD-10245
USER02-TEST-003-SUBA
USER02-TEST-002-SUBB
Я обнаружил, что запросы, где идентификатор заканчивается цифрой, не совпадают:
SELECT *
FROM identifier
WHERE identifier = 'USER01-TESTXXY-CAD-10245';
но запросы, соответствующие идентификатору, оканчивающемуся на буквы, успешно совпадают
SELECT *
FROM identifier
WHERE identifier = 'USER02-TEST-003-SUBA';
Мои запросы точны, мне не нужно сравнивать их с LIKE, потому что мои пользователи предоставляют мне точные строки. Кроме того, varchar (45) более чем достаточно для моих идентификаторов.
Что я сделал не так? В чем может быть причина или решение?