Индексный столбец Nullable MySql - PullRequest
0 голосов
/ 11 октября 2018

У меня есть обнуляемый столбец типа DateTime, этот же столбец проиндексирован.Но когда выполняется выбор, индекс не используется.

CREATE TABLE `te3` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dataHora` datetime DEFAULT NULL,
`nome` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `IDX_DATAHORA` (`dataHora`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;



SELECT *
FROM te3 
where dataHora between '2018-10-11 15:18:16' AND '2018-10-11 15:18:50';

Extra Использование где

Не использовать индекс.

Запрос медленный, что я должен делать?Просто помните, что столбец должен быть обнуляемым

1 Ответ

0 голосов
/ 11 октября 2018

Ваш индекс может быть установлен как INVISIBLE:

MySQL поддерживает невидимые индексы;то есть индексы, которые не используются оптимизатором. Эта функция применяется к индексам, отличным от первичных ключей (явных или неявных).

ALTER TABLE te3 ALTER INDEX index_name VISIBLE;

Проверка:

SELECT INDEX_NAME, IS_VISIBLE
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_NAME = 'te3';
...