Mysql --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ------------------------------+------+------------------------------------------ --------+--------------+---------+------+------+-------------------------------- + |1 |主| |空 |全部|空|空|空|空| 358 || |1 |主| |空Mysql -------------------------------------------------------------------------------- ,mysql,sql,performance,sql-update,large-data,Mysql,Sql,Performance,Sql Update,Large Data,-------------------------------------------------------------------------------- -------------
mData | CREATE TABLE `mData` (
`m1` mediumint(8) unsigned DEFAULT NULL,
`m2` smallint(5) unsigned DEFAULT NULL,
`m3` bigint(20) DEFAULT NULL,
`m4` tinyint(4) DEFAULT NULL,
`m5` date DEFAULT NULL,
KEY `m_m1` (`m1`) USING HASH,
KEY `m_date` (`m5`),
KEY `m_m2` (`m2`),
KEY `m_combined` (`m1`,`m2`,`m5`),
KEY `m1_tradeday` (`m1`,`m5`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
/*!50100 PARTITION BY RANGE ( YEAR(m5))
SUBPARTITION BY HASH (MONTH(m5))
(PARTITION p2013 VALUES LESS THAN (2014)
(SUBPARTITION dec_2013 ENGINE = InnoDB,
SUBPARTITION jan_2013 ENGINE = InnoDB,
SUBPARTITION feb_2013 ENGINE = InnoDB,
SUBPARTITION mar_2013 ENGINE = InnoDB,
SUBPARTITION apr_2013 ENGINE = InnoDB,
SUBPARTITION may_2013 ENGINE = InnoDB,
SUBPARTITION jun_2013 ENGINE = InnoDB,
SUBPARTITION jul_2013 ENGINE = InnoDB,
SUBPARTITION aug_2013 ENGINE = InnoDB,
SUBPARTITION sep_2013 ENGINE = InnoDB,
SUBPARTITION oct_2013 ENGINE = InnoDB,
SUBPARTITION nov_2013 ENGINE = InnoDB),
PARTITION p2014 VALUES LESS THAN (2015)
(SUBPARTITION dec_2014 ENGINE = InnoDB,
SUBPARTITION jan_2014 ENGINE = InnoDB,
SUBPARTITION feb_2014 ENGINE = InnoDB,
SUBPARTITION mar_2014 ENGINE = InnoDB,
SUBPARTITION apr_2014 ENGINE = InnoDB,
SUBPARTITION may_2014 ENGINE = InnoDB,
SUBPARTITION jun_2014 ENGINE = InnoDB,
SUBPARTITION jul_2014 ENGINE = InnoDB,
SUBPARTITION aug_2014 ENGINE = InnoDB,
SUBPARTITION sep_2014 ENGINE = InnoDB,
SUBPARTITION oct_2014 ENGINE = InnoDB,
SUBPARTITION nov_2014 ENGINE = InnoDB),
PARTITION p2015 VALUES LESS THAN (2016)
(SUBPARTITION dec_2015 ENGINE = InnoDB,
SUBPARTITION jan_2015 ENGINE = InnoDB,
SUBPARTITION feb_2015 ENGINE = InnoDB,
SUBPARTITION mar_2015 ENGINE = InnoDB,
SUBPARTITION apr_2015 ENGINE = InnoDB,
SUBPARTITION may_2015 ENGINE = InnoDB,
SUBPARTITION jun_2015 ENGINE = InnoDB,
SUBPARTITION jul_2015 ENGINE = InnoDB,
SUBPARTITION aug_2015 ENGINE = InnoDB,
SUBPARTITION sep_2015 ENGINE = InnoDB,
SUBPARTITION oct_2015 ENGINE = InnoDB,
SUBPARTITION nov_2015 ENGINE = InnoDB),
PARTITION p2016 VALUES LESS THAN (2017)
(SUBPARTITION dec_2016 ENGINE = InnoDB,
SUBPARTITION jan_2016 ENGINE = InnoDB,
SUBPARTITION feb_2016 ENGINE = InnoDB,
SUBPARTITION mar_2016 ENGINE = InnoDB,
SUBPARTITION apr_2016 ENGINE = InnoDB,
SUBPARTITION may_2016 ENGINE = InnoDB,
SUBPARTITION jun_2016 ENGINE = InnoDB,
SUBPARTITION jul_2016 ENGINE = InnoDB,
SUBPARTITION aug_2016 ENGINE = InnoDB,
SUBPARTITION sep_2016 ENGINE = InnoDB,
SUBPARTITION oct_2016 ENGINE = InnoDB,
SUBPARTITION nov_2016 ENGINE = InnoDB),
PARTITION pmax VALUES LESS THAN MAXVALUE
(SUBPARTITION dec_max ENGINE = InnoDB,
SUBPARTITION jan_max ENGINE = InnoDB,
SUBPARTITION feb_max ENGINE = InnoDB,
SUBPARTITION mar_max ENGINE = InnoDB,
SUBPARTITION apr_max ENGINE = InnoDB,
SUBPARTITION may_max ENGINE = InnoDB,
SUBPARTITION jun_max ENGINE = InnoDB,
SUBPARTITION jul_max ENGINE = InnoDB,
SUBPARTITION aug_max ENGINE = InnoDB,
SUBPARTITION sep_max ENGINE = InnoDB,
SUBPARTITION oct_max ENGINE = InnoDB,
SUBPARTITION nov_max ENGINE = InnoDB)) */ |
update mData as a join (select * from mData
where m1 = 326 and m5 = '2015- 07-06' ) as b
on a.m5 > b.m5 and a.m1 = b.m1
and a.m2 = b.m2 and a.m3 = b.m3
set a.m4 = 0;
explain partitions (select * from (select * from mData where m1 = 326) as a join (select * from mData where m1 = 326 and m5= '2015-07-06') as b on a.m5 > b.m5 and a.m1 = b.m1 and a.m2 = b.m2 and a.m3 = b.m3 and a.m5 > '2015-07-06');
EXPLAIN PARTITIONS select * from ccass_data where sid = 326 and trade_day = '2015-07-06';
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+------------+----------------+------+--------------------------------------------------+--------------+---------+-------------+------+-------------+
| 1 | SIMPLE | mData | p2015_jul_2015 | ref | m_m1,m_m5,m_combined,m1_m5 | m1_m5 | 8 | const,const | 357 | Using where |
KEY `m_m1` (`m1`)