У меня есть большой набор данных в версии MySQL 5.6 И предположим, что имя столбца A, столбца B и столбца C.
columnA (bigint) columnB (bigint) Время (метка времени)
ГдеЯ применил BTREE UNIQUE INDEXING.
Но когда я объясняю свой запрос, я просматриваю все строки.
Я пытался проанализировать, восстановить таблицу, но безуспешно.
Примечание:
В разных таблицах после применения к индексу я получаю ожидаемый результат.
Размер столбца A (bigint 20), в котором возникла проблема, превышает 50 000.
Я хочу, чтобы после индексации прошла одна строка.
При хранении базы данных Mysql в индексе отображается 0B.
CREATE TABLE TableA ( ColumnA bigint(20) NOT NULL DEFAULT '0',
ColumnB bigint(20) NOT NULL DEFAULT '0',
ColumnC bigint(20) NOT NULL DEFAULT '0',
ColumnD bigint(20) NOT NULL DEFAULT '0',
ColumnE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `TableA`
ADD UNIQUE KEY `idx_npp_pid` (`ColumnA`),
ADD KEY `idx_npp_uid` (`ColumnD`);
COMMIT;
EXPLAIN SELECT `ColumnA` FROM `TableA` WHERE `ColumnA`=4444;
Объяснение результата:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE TableA ALL NULL NULL NULL NULL 132244 Using where