我正在使用 MySQL 8.0.30,并且知道它支持功能索引。但是我尝试根据一些字段的总和创建一个索引,如下所示非常简单,但是没有使用索引,即使在可能的索引中,它也没有显示。
这是我的桌子
CREATE TABLE `sample_product` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`avai_qty` double DEFAULT NULL,
`picked_qty` double DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `functional_index` (((`avai_qty` + `picked_qty`)))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
这是我的查询
select * from sample_product where avai_qty + picked_qty > 5000;
我尝试运行解释
{
"query_block": {
"cost_info": {
"query_cost": "0.35"
},
"select_id": 1,
"table": {
"access_type": "ALL",
"attached_condition": "((`sample_product`.`avai_qty` + `sample_product`.`picked_qty`) > 5000)",
"cost_info": {
"data_read_per_join": "1K",
"eval_cost": "0.10",
"prefix_cost": "0.35",
"read_cost": "0.25"
},
"filtered": "100.00",
"rows_examined_per_scan": 1,
"rows_produced_per_join": 1,
"table_name": "sample_product",
"used_columns": [
"id",
"name",
"avai_qty",
"picked_qty"
]
}
}
}
我不确定这是 MySQL 的错误还是我做错了什么。