表结构语句:
CREATE TABLE `t_test_price` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键,自增',
`activity_id` varchar(20) NOT NULL COMMENT '活动ID',
`product_code` varchar(32) NOT NULL COMMENT 'product_code',
`sku_code` varchar(32) NOT NULL COMMENT 'sku_code',
`country_code` varchar(20) NOT NULL COMMENT '国家编码',
`activity_price` decimal(18,6) NOT NULL COMMENT '价格',
`version` int(10) DEFAULT '0' COMMENT '版本标记',
`deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标记(0-未删除,1-删除)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
KEY `deleted` (`deleted`) USING BTREE,
KEY `activity_id` (`activity_id`,`sku_code`,`country_code`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8mb4 COMMENT='测试价格表';
索引设计如图:
索引使用测试语句及使用情况如下:
EXPLAIN SELECT
id,
activity_id,
sku_code,
country_code,
product_code,
activity_price,
deleted,
version,
create_time,
modify_time
FROM
t_activity_price
WHERE
-- 使用索引
deleted = 0
-- 使用索引
-- deleted = 0
-- AND activity_id = '161616'
-- AND sku_code = '2144068394025134'
-- AND country_code = 'zh-CN'
-- 使用索引
-- activity_id = '161616'
-- AND sku_code = '2144068394025134'
-- AND country_code = 'zh-CN'
-- 不使用索引
-- sku_code = '2144068394025134'
-- AND country_code = 'zh-CN'
-- 不使用索引
-- sku_code = '2144068394025134'
-- 使用索引
-- activity_id = '161616'
-- 不使用索引
-- country_code = 'zh-CN'
-- 使用索引
-- country_code = 'zh-CN'
-- AND sku_code = '2144068394025134'
-- AND activity_id = '161616'