list 分区
两个相同结构的表 ,数据量也一样16000000条记录
CREATE TABLE `corp_base_par` (
`t_date` datetime DEFAULT NULL COMMENT '变动日期',
`corp_id` bigint(20) NOT NULL AUTO_INCREMENT,
`controller` int(11) DEFAULT NULL COMMENT '控制人编号',
`corp_name` varchar(100) DEFAULT NULL COMMENT '企业名称',
`artificial_person` varchar(50) DEFAULT NULL COMMENT '企业法人',
`corp_bln` varchar(100) DEFAULT NULL COMMENT '营业执照号码',
`corp_type` varchar(255) DEFAULT NULL COMMENT '公司类型',
`corp_bs` varchar(2000) DEFAULT NULL COMMENT '经营范围',
`corp_rc` decimal(20,4) DEFAULT NULL COMMENT '注册资本(万元)',
`corp_pc` decimal(20,4) DEFAULT NULL COMMENT '实收资本',
`currency_code` varchar(10) DEFAULT NULL COMMENT '货币代码',
`corp_edate` date DEFAULT NULL COMMENT '企业成立日期',
`corp_addr` varchar(500) DEFAULT NULL COMMENT '注册地址',
`corp_rdate` date DEFAULT NULL COMMENT '注册登记日期',
`corp_ddate` date DEFAULT NULL COMMENT '注册登记到期日',
`register_org` varchar(200) DEFAULT NULL COMMENT '登记机关',
`approval_date` date DEFAULT NULL COMMENT '核准日期',
`approval_status` varchar(50) DEFAULT NULL COMMENT '核准状态',
`industry_category` varchar(50) DEFAULT NULL COMMENT '行业分类',
`org_id` varchar(20) DEFAULT NULL COMMENT '组织机构代码',
`tax_id` varchar(20) DEFAULT NULL COMMENT '税务登记证号',
`company_ID` varchar(200) DEFAULT NULL COMMENT '工商总局企业ID',
`zhejiang_id` char(100) DEFAULT NULL COMMENT '浙江企业id',
`get_date` date DEFAULT NULL COMMENT '抓取日期',
`res_date` int DEFAULT NULL COMMENT '数据来源',
`canc_date` date DEFAULT NULL COMMENT '注销日期',
`quantum_id` varchar(255) DEFAULT NULL COMMENT '量子id',
PRIMARY KEY (`corp_id`,res_date),
KEY `idx_resdate` (`res_date`),
KEY `idx_corp_name` (`corp_name`),
KEY `idx_art_person` (`artificial_person`),
KEY `idx_t_date` (`t_date`)
) ENGINE=InnoDB AUTO_INCREMENT=100016970843 DEFAULT CHARSET=utf8 COMMENT='企业基本信息'
/*!50100 PARTITION BY LIST (res_date)
(PARTITION p0 VALUES in (100000) ENGINE = InnoDB,
PARTITION p1 VALUES in (110000) ENGINE = InnoDB,
PARTITION p2 VALUES in (120000) ENGINE = InnoDB,
PARTITION p3 VALUES in (130000) ENGINE = InnoDB,
PARTITION p4 VALUES in (140000) ENGINE = InnoDB,
PARTITION p5 VALUES in (150000) ENGINE = InnoDB,
PARTITION p6 VALUES in (210000) ENGINE = InnoDB,
PARTITION p7 VALUES in (220000) ENGINE = InnoDB,
PARTITION p8 VALUES in (230000) ENGINE = InnoDB,
PARTITION p9 VALUES in (310000) ENGINE = InnoDB,
PARTITION p10 VALUES in (320000) ENGINE = InnoDB,
PARTITION p11 VALUES in (330000) ENGINE = InnoDB,
PARTITION p12 VALUES in (340000) ENGINE = InnoDB,
PARTITION p13 VALUES in (350000) ENGINE = InnoDB,
PARTITION p14 VALUES in (360000) ENGINE = InnoDB,
PARTITION p15 VALUES in (370000) ENGINE = InnoDB,
PARTITION p16 VALUES in (410000) ENGINE = InnoDB,
PARTITION p17 VALUES in (420000) ENGINE = InnoDB,
PARTITION p18 VALUES in (430000) ENGINE = InnoDB,
PARTITION p19 VALUES in (440000) ENGINE = InnoDB,
PARTITION p20 VALUES in (450000) ENGINE = InnoDB,
PARTITION p21 VALUES in (460000) ENGINE = InnoDB,
PARTITION p22 VALUES in (500000) ENGINE = InnoDB,
PARTITION p23 VALUES in (510000) ENGINE = InnoDB,
PARTITION p24 VALUES in (520000) ENGINE = InnoDB,
PARTITION p25 VALUES in (530000) ENGINE = InnoDB,
PARTITION p26 VALUES in (540000) ENGINE = InnoDB,
PARTITION p27 VALUES in (610000) ENGINE = InnoDB,
PARTITION p28 VALUES in (620000) ENGINE = InnoDB,
PARTITION p29 VALUES in (630000) ENGINE = InnoDB,
PARTITION p30 VALUES in (640000) ENGINE = InnoDB,
PARTITION p31 VALUES in (650000) ENGINE = InnoDB,
PARTITION p32 VALUES in (0) ENGINE = InnoDB) */;
---------------------------------------------------------------------------------
CREATE TABLE `corp_base` (
`t_date` datetime DEFAULT NULL COMMENT '变动日期',
`corp_id` bigint(20) NOT NULL AUTO_INCREMENT,
`controller` int(11) DEFAULT NULL COMMENT '控制人编号',
`corp_name` varchar(100) DEFAULT NULL COMMENT '企业名称',
`artificial_person` varchar(50) DEFAULT NULL COMMENT '企业法人',
`corp_bln` varchar(100) DEFAULT NULL COMMENT '营业执照号码',
`corp_type` varchar(255) DEFAULT NULL COMMENT '公司类型',
`corp_bs` varchar(2000) DEFAULT NULL COMMENT '经营范围',
`corp_rc` decimal(20,4) DEFAULT NULL COMMENT '注册资本(万元)',
`corp_pc` decimal(20,4) DEFAULT NULL COMMENT '实收资本',
`currency_code` varchar(10) DEFAULT NULL COMMENT '货币代码',
`corp_edate` date DEFAULT NULL COMMENT '企业成立日期',
`corp_addr` varchar(500) DEFAULT NULL COMMENT '注册地址',
`corp_rdate` date DEFAULT NULL COMMENT '注册登记日期',
`corp_ddate` date DEFAULT NULL COMMENT '注册登记到期日',
`register_org` varchar(200) DEFAULT NULL COMMENT '登记机关',
`approval_date` date DEFAULT NULL COMMENT '核准日期',
`approval_status` varchar(50) DEFAULT NULL COMMENT '核准状态',
`industry_category` varchar(50) DEFAULT NULL COMMENT '行业分类',
`org_id` varchar(20) DEFAULT NULL COMMENT '组织机构代码',
`tax_id` varchar(20) DEFAULT NULL COMMENT '税务登记证号',
`company_ID` varchar(200) DEFAULT NULL COMMENT '工商总局企业ID',
`zhejiang_id` char(100) DEFAULT NULL COMMENT '浙江企业id',
`get_date` date DEFAULT NULL COMMENT '抓取日期',
`res_date` varchar(100) DEFAULT NULL COMMENT '数据来源',
`canc_date` date DEFAULT NULL COMMENT '注销日期',
`quantum_id` varchar(255) DEFAULT NULL COMMENT '量子id',
PRIMARY KEY (`corp_id`),
KEY `idx_resdate` (`res_date`),
KEY `idx_corp_name` (`corp_name`),
KEY `idx_art_person` (`artificial_person`),
KEY `idx_t_date` (`t_date`)
) ENGINE=InnoDB AUTO_INCREMENT=100017504860 DEFAULT CHARSET=utf8 COMMENT='企业基本信息';
------------------------结果------------------------------------------------------------------------------------------------------------
mysql> show profiles;
+----------+------------+-----------------------------------------------------------------------------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+-----------------------------------------------------------------------------------------------------------+
| 1 | 0.00107675 | select * from corp_base where corp_name like '娃哈哈商业股份有限公司%' and res_date='330000' |
| 2 | 0.00397325 | select * from corp_base_par where corp_name like '娃哈哈商业股份有限公司%' and res_date=330000 |
| 3 | 0.13822650 | select * from corp_base where res_date='330000' limit 100 |
| 4 | 0.01605200 | select * from corp_base_par where res_date=330000 limit 100 |
+----------+------------+-----------------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)
如果使用到了
res_date 分区的字段查询 效果 明显 比 只使用
res_date 作为索引来查询 快了10倍 如3,4
但是 如果使用别的索引条件 加上分区字段效果 没有显著提升 如1,2,下图为1,2的执行计划
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30127122/viewspace-2095052/
,如需转载,请注明出处,否则将追究法律责任。