如何解决更改列时解释过滤器值更改
我在 MySQL 5.7 中遇到过奇怪的行为
SELECT orderId
FROM `order`
WHERE vendor = 11 AND status >= 0 AND city = 1
AND created_date >= '2020-12-01' AND created_date <= '2020-12-31'
SELECT userId
FROM `order`
WHERE vendor = 11 AND status >= 0 AND city = 1
AND created_date >= '2020-12-01' AND created_date <= '2020-12-31'
我在所有 4 列上都有一个复合索引
索引为 vendor_city_date (vendor,city,created_date,status)
。
但是对于某些列,我得到了 50 的过滤器,而对于其他列,我得到了 5.55 的过滤器。
这是表的结构,它有 50 个其他列,我已经删除了这些列。
CREATE TABLE `order` (
`orderId` int(11) NOT NULL AUTO_INCREMENT,`vendor` int(11) NOT NULL DEFAULT '1',`userId` int(11) NOT NULL,`offer` int(11) NOT NULL DEFAULT '0',`city` int(11) NOT NULL,`offset` int(11) NOT NULL DEFAULT '',`status` tinyint(4) NOT NULL DEFAULT '0',`payment` tinyint(4) NOT NULL DEFAULT '0',`created_date` date NOT NULL,PRIMARY KEY (`orderId`),KEY `city_id` (`city`),KEY `user_id` (`userId`),KEY `status` (`status`),KEY `vendor` (`vendor`),KEY `user_status` (`userId`,`status`),KEY `vendor_city_date` (`vendor`,`city`,`created_date`,`status`) USING BTREE
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。