mysql - 索引列可为空的 MySql
问题描述
我有一列可以为空的 DateTime 类型的列,该列已编入索引。但是在执行 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
不使用索引。
查询很慢,我该怎么办?只需记住该列必须可以为空
解决方案
您的索引可以设置为INVISIBLE
:
MySQL 支持隐形索引;即优化器未使用的索引。该功能适用于主键以外的索引(显式或隐式)。
ALTER TABLE te3 ALTER INDEX index_name VISIBLE;
检查:
SELECT INDEX_NAME, IS_VISIBLE
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_NAME = 'te3';
推荐阅读
- wordpress - WordPress前端媒体上传器在前面上传图像时注销
- firebase-authentication - 使用 Jest 进行 Nest 控制器测试
- angular - 如何在 Angular html 中使用枚举数据类型?
- gekko - 如何将 GEKKO 返回的整数转换回 python 可识别的整数?
- python - Pyplot imshow 函数只显示轴而不是图像
- php - 如何在 PHP 的 dbase_create dbase 扩展中将类型设置为 FoxPro
- node.js - NODE JS - 无法读取未定义的属性“推送”
- d3.js - 如何从 tif 和 tif.ovr 文件中提取数据并应用于 D3.js?
- python - 如何使用 python 抓取预订评论?
- java - 我需要将日期从 json 传递给我的控制器