zoukankan      html  css  js  c++  java
  • mysql 分区表

    mysql 提供分区表的功能,可以将大表进行分拆,分拆后可以极大的提升查询能力。

    备注:分区表的分区也可以部署到不同的物理磁盘。

    下面是一个典型的RANGE分区例子:

    1、创建数据库如下:

    DROP TABLE IF EXISTS t_demo_test4;
    CREATE TABLE t_demo_test4(
        tid int(20) NOT NULL AUTO_INCREMENT,
        day datetime NOT NULL,
        title varchar(50),
        content varchar(200),
        PRIMARY KEY(tid, day)    
    )PARTITION BY RANGE COLUMNS (day)(
        PARTITION P_3 VALUES LESS THAN ('2015-03-01'),
        PARTITION P_6 VALUES LESS THAN ('2015-06-01'),
        PARTITION P_9 VALUES LESS THAN ('2015-09-01'),
        PARTITION P_12 VALUES LESS THAN ('2015-12-31')
    );

    2、插入数据:

    insert into t_demo_test4(day, title, content) 
    values('2015-04-05 22:10:30','title1','content sinny write test')
    ,('2015-05-05 22:10:30','title1','一种内容1')
    ,('2015-06-06 22:10:30','title1','一种内容2')
    ,('2015-07-07 22:10:30','title1','一种内容3')
    ,('2015-08-08 22:10:30','title1','一种内容4');

    3、查询数据:

    SELECT * FROM t_demo_test4 WHERE day < '2015-5-30';

    通过explain查看:

    可以看到此时,rows = 4,改搜索并未遍历全部数据。

    //-------------------------------------------------------------------------------------------------------------------------------

    MYSQL还提供LIST、HASH、KEY三种分区方式,如下:

    DROP TABLE IF EXISTS t_demo_test5;
    CREATE TABLE t_demo_test5(
        tid int(20) NOT NULL AUTO_INCREMENT,
        day datetime NOT NULL,
        type varchar(50),
        content varchar(200),
        PRIMARY KEY(tid,type)    
    )PARTITION BY LIST COLUMNS(type)(
        PARTITION P_1 VALUES  IN ('report','note'),
        PARTITION P_2 VALUES  IN ('default')
    );
    DROP TABLE IF EXISTS t_demo_test5;
    CREATE TABLE t_demo_test5(
        tid int(20) NOT NULL AUTO_INCREMENT,
        day datetime NOT NULL,
        type varchar(50),
        content varchar(200),
        PRIMARY KEY(tid)    
    )PARTITION BY LINEAR HASH(tid)
    PARTITIONS 4;
    DROP TABLE IF EXISTS t_demo_test5;
    CREATE TABLE t_demo_test5(
        tid int(20) NOT NULL AUTO_INCREMENT,
        day datetime NOT NULL,
        type varchar(50),
        content varchar(200),
        PRIMARY KEY(tid)    
    )PARTITION BY LINEAR KEY(tid)
    PARTITIONS 4;
  • 相关阅读:
    子组件 调用父组件方法
    加载进度条
    form 验证 自定义
    关于读取本地text文件,自动被添加空格的问题
    关于form表单中button按钮自动提交问题
    正态分布折线图/直方图相关方法以及概念
    大于0的数字(包含小数和整数)的正则表达式
    bigdecimal类型除法问题
    添加数据库的Maven依赖(SqlServer,Oracle)
    JS中null与undefined的区别
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/4669659.html
Copyright © 2011-2022 走看看