索引列可为null的mysql

m4pnthwp  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(377)

我有一个datetime类型的列可以为null,这个列也被索引。但在执行select时,不使用索引。

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';

额外使用where
不使用索引。
查询很慢,我该怎么办?只要记住列必须是可空的

m2xkgtsf

m2xkgtsf1#

您的索引可以设置为 INVISIBLE :
mysql支持不可见索引;也就是说,优化器不使用的索引。此功能适用于主键(显式或隐式)以外的索引。

ALTER TABLE te3 ALTER INDEX index_name VISIBLE;

检查:

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

相关问题