MYSQL表分区测试

参考:https://blog.csdn.net/fengnp/article/details/81239286

-- 1. 创建分区表
CREATE TABLE part_tab( 
    c1 INT DEFAULT NULL, 
    c2 VARCHAR(30) DEFAULT NULL, 
    c3 DATE NOT NULL
) PARTITION BY RANGE(YEAR(c3)) (
    PARTITION p0  VALUES LESS THAN (1995),
    PARTITION p1  VALUES LESS THAN (1996) ,
    PARTITION p2  VALUES LESS THAN (1997) ,
    PARTITION p3  VALUES LESS THAN (1998) ,
    PARTITION p4  VALUES LESS THAN (1999) ,
    PARTITION p5  VALUES LESS THAN (2000) ,
    PARTITION p6  VALUES LESS THAN (2001) ,
    PARTITION p7  VALUES LESS THAN (2002) ,
    PARTITION p8  VALUES LESS THAN (2003) ,
    PARTITION p9  VALUES LESS THAN (2004) ,
    PARTITION p10 VALUES LESS THAN (2010),
    PARTITION p11 VALUES LESS THAN (MAXVALUE)
);

-- 2. 创建不分区表
CREATE TABLE no_part_tab(
    c1 INT DEFAULT NULL, 
    c2 VARCHAR(30) DEFAULT NULL, 
    c3 DATE NOT NULL
);

-- 3. 查询
SELECT * FROM part_tab;
SELECT * FROM no_part_tab;

-- 4. 存储过程插入数据
DROP PROCEDURE IF EXISTS load_part_tab;
DELIMITER //
CREATE PROCEDURE load_part_tab()
    BEGIN
    DECLARE v INT DEFAULT 0;
    WHILE v < 8000000
    DO
        INSERT INTO part_tab VALUES (v, 'testing partitions', ADDDATE('1995-01-01', (RAND(v)*36520)MOD 3652));
        SET v = v + 1;
    END WHILE;
END;
//
CALL load_part_tab;
INSERT INTO no_part_tab SELECT * FROM part_tab;

-- 5. 测试查询效率
SELECT COUNT(*) FROM part_tab       WHERE c3 > DATE '1995-01-01'AND c3 < DATE '1995-12-31';
SELECT COUNT(*) FROM no_part_tab WHERE c3 > DATE '1995-01-01'AND c3 < DATE '1995-12-31';

-- 6. 通过explain语句来分析执行情况
EXPLAIN SELECT COUNT(*) FROM part_tab       WHERE c3 > DATE '1995-01-01'AND c3 < DATE '1995-12-31';
EXPLAIN SELECT COUNT(*) FROM no_part_tab WHERE c3 > DATE '1995-01-01'AND c3 < DATE '1995-12-31';

转载于:https://my.oschina.net/u/2559275/blog/3068360

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值