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;
  • 相关阅读:
    junit4的初级用法
    junit3和junit4的区别总结
    工作一年多了,我的技术博客终于开通了
    VC++ 运行库官方安装包
    文本编辑器通用快捷键
    gcc命令介绍
    MinGW安装与配置
    windows常见快捷键
    Notepad++配置C/C++
    Notepad++快捷键
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/4669659.html
Copyright © 2011-2022 走看看