zoukankan      html  css  js  c++  java
  • 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)
    );

  • 相关阅读:
    移动应用专项测试
    MAC连接安卓手机通过adb指令安装apk
    Git GUI可视化操作教程
    nestjs中typeorm进行事物操作
    vue-element-admin 实现动态路由(从后台查询出菜单列表绑定侧边栏)
    el-form 表单校验
    vscode设置VUE eslint开发环境
    .netcore signalR 实时消息推送
    psexec局域网执行远程命令
    Asp.Net跨平台 Jexus 5.8.1 独立版
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351451.html
Copyright © 2011-2022 走看看