• 19.6.1 Partitioning Keys, Primary Keys, and Unique Keys 分区键,主键,和唯一健


    19.6.1 Partitioning Keys, Primary Keys, and Unique Keys 分区键,主键,和唯一健

    本节讨论了分区键使用主键和唯一键的关系,管理这种关系的规则可以表示如下:

    所有列用于分区表达式 必须是唯一健的一部分:

    换句话说,表中的每一个唯一索引必须使用表的分区表达式的每一个列(这也包括表的主键,因为它也是定义为一个唯一键)

    例如, 下面的表创建语句无效:

    mysql> CREATE TABLE t1 (
    -> col1 INT NOT NULL,
    -> col2 DATE NOT NULL,
    -> col3 INT NOT NULL,
    -> col4 INT NOT NULL,
    -> UNIQUE KEY (col1, col2)
    -> )
    -> PARTITION BY HASH(col3)
    -> PARTITIONS 4;
    ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table’s partitioning function

    一个主键必须包含分区函数所有的列

    在每一种情况下,涉及的表至少有一个唯一键,没有包含分区表达式所有的列。

    下面的每一个语句都是有效的:
    CREATE TABLE t1 (
    col1 INT NOT NULL,
    col2 DATE NOT NULL,
    col3 INT NOT NULL,
    col4 INT NOT NULL,
    UNIQUE KEY (col1, col2, col3)
    )
    PARTITION BY HASH(col3)
    PARTITIONS 4;

    CREATE TABLE t2 (
    col1 INT NOT NULL,
    col2 DATE NOT NULL,
    col3 INT NOT NULL,
    col4 INT NOT NULL,
    UNIQUE KEY (col1, col3)
    )
    PARTITION BY HASH(col1 + col3)
    PARTITIONS 4;

    mysql> CREATE TABLE t3 (
    -> col1 INT NOT NULL,
    -> col2 DATE NOT NULL,
    -> col3 INT NOT NULL,
    -> col4 INT NOT NULL,
    -> UNIQUE KEY (col1, col2),
    -> UNIQUE KEY (col3)
    -> )
    -> PARTITION BY HASH(col1 + col3)
    -> PARTITIONS 4;
    ERROR 1491 (HY000): A PRIMARY KEY must include all columns in the table’s partitioning function

    创建表失败 因为col1 和col3 都被包含在分区键,但是 那些列都不是表的唯一键的一部分:解决方法如下:

    mysql> CREATE TABLE t3 (
    -> col1 INT NOT NULL,
    -> col2 DATE NOT NULL,
    -> col3 INT NOT NULL,
    -> col4 INT NOT NULL,
    -> UNIQUE KEY (col1, col2, col3),
    -> UNIQUE KEY (col3)
    -> )
    -> PARTITION BY HASH(col3)
    -> PARTITIONS 4;
    Query OK, 0 rows affected (0.05 sec)

    下面的表不能被分区,因为没有办法包括在分区键,任何的列都属于唯一索引:
    CREATE TABLE t4 (
    col1 INT NOT NULL,
    col2 INT NOT NULL,
    col3 INT NOT NULL,
    col4 INT NOT NULL,
    UNIQUE KEY (col1, col3),
    UNIQUE KEY (col2, col4)
    );

  • 相关阅读:
    思维导图
    第九周学习
    java连接数据库执行SQL并把查询到的数据保存到磁盘
    火狐浏览器安装firebug和firepath插件方法(离线)
    selenium自动化测试资源整理(含所有版本chrome、chromedriver、firefox下载链接)
    Jenkins调度Selenium脚本不能打开浏览器解决办法
    selenium如何操作HTML5的画布canvas上的元素
    Java中如何使用非强制类型转换把字符串转换成int类型
    自动化测试如何使用driver.findElements去操作页面元素
    Jmeter响应数据中文乱码
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351451.html
Copyright © 2020-2023  润新知