关于mysql多列索引失效问题
建表语句:
CREATE TABLE `ic_tag` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`domain` varchar(30) DEFAULT NULL COMMENT '标签应用的领域',
`code` varchar(30) DEFAULT NULL COMMENT '标签编码,一般用英文或数字表示,比如所有的表示品牌的标签用brand作为标签名称,对于没有名称的标签,该字段为空',
`value` varchar(100) NOT NULL COMMENT '标签显示的内容',
`sort_factor` int(11) DEFAULT NULL COMMENT '排序因子',
`version` bigint(20) NOT NULL DEFAULT '1',
`gmt_created` datetime NOT NULL COMMENT '创建时间',
`gmt_modified` datetime NOT NULL COMMENT '最近一次修改时间',
`type` int(11) NOT NULL DEFAULT '10',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_value_code_domain` (`value`,`code`,`domain`)
) ENGINE=InnoDB AUTO_INCREMENT=898740 DEFAULT CHARSET=utf8 COMMENT='商品标签';
查询sql:
explain select * from ic_tag where value ='活动标签1' and code='1' and domain = 'mall_sales';
查询结果:

CREATE TABLE `ic_tag` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`domain` varchar(30) DEFAULT NULL COMMENT '标签应用的领域',
`code` varchar(30) DEFAULT NULL COMMENT '标签编码,一般用英文或数字表示,比如所有的表示品牌的标签用brand作为标签名称,对于没有名称的标签,该字段为空',
`value` varchar(100) NOT NULL COMMENT '标签显示的内容',
`sort_factor` int(11) DEFAULT NULL COMMENT '排序因子',
`version` bigint(20) NOT NULL DEFAULT '1',
`gmt_created` datetime NOT NULL COMMENT '创建时间',
`gmt_modified` datetime NOT NULL COMMENT '最近一次修改时间',
`type` int(11) NOT NULL DEFAULT '10',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_value_code_domain` (`value`,`code`,`domain`)
) ENGINE=InnoDB AUTO_INCREMENT=898740 DEFAULT CHARSET=utf8 COMMENT='商品标签';
查询sql:
explain select * from ic_tag where value ='活动标签1' and code='1' and domain = 'mall_sales';
查询结果:

...全文
相关推荐
Mysql索引会失效的几种情况分析
**多列索引的使用不当**:多列索引在查询时,只有当查询条件包含索引的第一部分时,索引才会被有效利用。如果查询只涉及后面的列,MySQL将无法利用整个索引。
mysql索引失效.docx MySQL索引失效是指在查询执行过程中,数据库无法有效地使用索引来提高查询性能
多列索引的顺序问题如果查询条件与多列索引的顺序不匹配,MySQL将无法有效使用索引。多列索引的查询必须按照定义的顺序进行才能生效。
MySQL索引失效情况[项目代码]
MySQL数据库中索引的合理使用对于提升查询效率至关重要。索引失效的问题可能导致查询速度大幅下降,因此理解索引失效的各种场景至关重要。
MySQL索引失效场景全解析
本篇将全面解析MySQL索引失效的场景,帮助数据库管理员和开发人员有效识别并处理这类问题。索引失效的一个常见场景是查询条件使用了函数或者表达式。
简述Mysql Explain 命令
此外,了解索引失效的常见情况也非常重要,例如:- WHERE子句中含有OR操作符,可能会导致索引不被使用。- 对于多列索引,如果WHERE条件只匹配索引的第一部分,其余部分则无法利用索引。


