MySQL分区字段列是否需要再单独建索引
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,下文主要给大家带来MySQL分区字段列是否需要再单独建索引,希望MySQL分区字段列是否需要再单独建索引能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。1、新
千家信息网最后更新 2025年02月23日MySQL分区字段列是否需要再单独建索引
下文主要给大家带来MySQL分区字段列是否需要再单独建索引,希望MySQL分区字段列是否需要再单独建索引能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。
1、新建表effect_new(以创建时间按月分区)
CREATE TABLE `effect_new` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `type` tinyint(4) NOT NULL DEFAULT '0', `timezone` varchar(10) DEFAULT NULL, `date` varchar(10) NOT NULL, `hour` varchar(2) DEFAULT NULL, `position` varchar(200) DEFAULT NULL, `country` varchar(32) NOT NULL, `create_time` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', PRIMARY KEY (`id`,`create_time`), KEY `index_date_hour_coun` (`date`,`hour`,`country`)) ENGINE=InnoDB AUTO_INCREMENT=983041 DEFAULT CHARSET=utf8PARTITION BY RANGE (TO_DAYS (`create_time`))(PARTITION p0 VALUES LESS THAN (736754) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (736785) ENGINE = InnoDB, PARTITION p2 VALUES LESS THAN (736815) ENGINE = InnoDB, PARTITION p3 VALUES LESS THAN (736846) ENGINE = InnoDB, PARTITION p4 VALUES LESS THAN (736876) ENGINE = InnoDB, PARTITION p5 VALUES LESS THAN (736907) ENGINE = InnoDB, PARTITION p6 VALUES LESS THAN (736938) ENGINE = InnoDB, PARTITION p7 VALUES LESS THAN (736968) ENGINE = InnoDB, PARTITION p8 VALUES LESS THAN (736999) ENGINE = InnoDB, PARTITION p9 VALUES LESS THAN (737029) ENGINE = InnoDB, PARTITION p10 VALUES LESS THAN (737060) ENGINE = InnoDB);
2、插入部分数据数据
INSERT INTO `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('1', '0', 'GMT+8', '2017-07-01', '', 'M-NotiCleanFull-FamilyRecom-0026', '', '2017-07-02 00:07:02');INSERT INTO `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('2', '1', 'GMT+8', '2017-09-30', '23', 'Ma5dtJub', 'EG', '2017-10-01 00:00:00');INSERT INTO `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('3', '1', 'GMT+8', '2017-09-10', '10', '28', 'DZ', '2017-09-11 00:08:20');INSERT INTO `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('4', '1', 'GMT+8', '2017-02-03', '20', '32', 'AD', '2017-02-04 00:00:00');INSERT INTO `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('5', '0', 'GMT+8', '2017-03-05', '2', NULL, 'AI', '2017-03-06 02:10:00');INSERT INTO `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('6', '0', 'GMT+8', '2017-09-23', '13', 'M-BrandSplash-S-0038', 'AG', '2017-09-23 13:00:00');INSERT INTO `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('7', '1', NULL, '2017-10-13', '12', 'BB-Main-AppAd-0018', 'AF', '2017-10-14 12:00:00');INSERT INTO `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('8', '0', 'GMT+8', '2017-10-28', '2', 'M-ChargeReminder-S-0040', 'AE', '2017-10-29 00:00:00');INSERT INTO `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('9', '1', 'GMT+8', '2017-10-09', NULL, '30', 'AI', '2017-10-10 00:09:00');INSERT INTO `effect_new` (`id`, `type`, `timezone`, `date`, `hour`, `position`, `country`, `create_time`) VALUES ('10', '0', 'GMT+8', '2017-10-05', '5', ' M-BrandSplash', 'LA', '2017-10-06 05:10:00');
3、分析语句
EXPLAIN PARTITIONSselect * from effect_new_indexwhere create_time = '2017-10-14 12:00:00'
结果为:
id | select_type | table | partitions | tpye | possible_keys | key | key_len | ref | rows | filtered | extra |
1 | SIMPLE | effect_new | p8 | ALL | null | null | null | null | 391515 | 10 | Using where |
4、给表effect_new添加索引idx_ctime
5、分析添加索引后的执行计划
结果为:
id | select_type | table | partitions | tpye | possible_keys | key | key_len | ref | rows | filtered | extra |
1 | SIMPLE | effect_new | p8 | ref | idx_ctime | idx_ctime | 5 | const | 60760 | 100 | null |
6、结论:
虽然表已经根据此字段分区,但这不能等同于索引。分了区,只能说该字段为某个值的记录会在某个分区里面,但不是索引,还要一顿好找。
有时候,主键不等于分区依据列,这时候主键又想建聚集索引的话,那么必须包含分区依据列,搞成复合主键。那么,这种情况下,分区依据列不就有索引了吗?是的,可是它不够快,如果在这个复合索引里面,分区依据列不排在第一位,就不够快,如果查找语句里常常用分区依据列作为过滤条件,就有必要为分区依据列额外单独建立一个索引。
对于以上关于MySQL分区字段列是否需要再单独建索引,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。
索引
字段
下文
不够
内容
数据
结果
语句
分析
好找
必要
这不
实际
废话
情况
时间
是的
更多
有时候
条件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
三级网络技术技术难
国家网络安全周在哪举办
网络安全考rhce
在一个数据库中有个概念模式
哪个数据库不提供主题词检索
江苏现代软件开发发展现状
win10家庭版无法激活服务器
2022福建网络安全省赛
摩尔庄园的天气和服务器有关系吗
软件开发项目进度周报
天姬变怎么找到以前的服务器
计算机网络技术的专业技能
河南网络安全信息化招聘岗位信息
服务器带宽越高越好吗
萍乡市趣玩互动网络技术有限公司
水务行业网络安全整体解决方案
海康软件开发 订阅服务
ecs服务器安全性
杭州志恒网络技术工作室
网络安全与信息化大赛获奖作品
博兴机械加工管理软件开发
软件开发公司愿景
网络技术研究院 刘传昌
电视剧软件开发
织梦远程服务器
安徽交友软件开发收费报价表
福州网络安全竞赛
航海王燃烧意志如何找到服务器
丽江好口碑java软件开发
苏州正规的零件加工管理软件开发