精华内容
下载资源
问答
  • 而又想用 PostgreSQL 10版本的分区表的功能。 但在创建的时候,出现如下问题。看起来是 PostgreSQL 10版本不支持在分区表上创建 primary key 或者 unique。想请教一下,什么方法能实现这个需求呢? 这是在分区表...
  • PostgreSQL 10 版本虽然支持创建范围分区表和列表分区表,但创建过程依然比较繁琐,需要手工定义子索引、主键,详见 PostgreSQL10:重量级新特性-支持分区表,PostgreSQL 11 版本得到增强,在父上创建索引、主键...

    PostgreSQL 10 版本虽然支持创建范围分区表和列表分区表,但创建过程依然比较繁琐,需要手工定义子表索引、主键,详见 PostgreSQL10:重量级新特性-支持分区表,PostgreSQL 11 版本得到增强,在父表上创建索引、主键、外键后,子表上将自动创建,本文演示这三种场景。

    值得一提的是,11 版本之前 PostgreSQL 的分区表不支持全局主键,虽然可以在父表和子表上分别定义主键,但不支持全局主键,也就是说,父表和子表、子表和子表的主键数据可以重复。

    手册上的 Release 说明

    Support for PRIMARY KEY, FOREIGN KEY, indexes, and triggers on partitioned tables

    本文以创建哈希分区表为例进行测试。

    测试环境准备

    创建分区表并插入测试数据,为后续测试做准备。

    创建父表

    CREATE TABLE userinfo (
     userid    int4,
     username  character varying(64),
     ctime   timestamp(6) without time zone
    ) PARTITION BY HASH(userid);

    创建子表

    CREATE TABLE userinfo_p0 PARTITION OF userinfo FOR VALUES WITH(MODULUS 4, REMAINDER 0);
    CREATE TABLE userinfo_p1 PARTITION OF userinfo FOR VALUES WITH(MODULUS 4, REMAINDER 1);
    CREATE TABLE userinfo_p2 PARTITION OF userinfo FOR VALUES WITH(MODULUS 4, REMAINDER 2);
    CREATE TABLE userinfo_p3 PARTITION OF userinfo FOR VALUES WITH(MODULUS 4, REMAINDER 3);

    插入数据

    给分区表插入100万数据,如下:

    INSERT INTO userinfo(userid,username,ctime) SELECT n, n || '_username',clock_timestamp() FROM generate_series(1,1000000) n;

    测试一: 创建主键

    在父表上创建主键,如下。

    ALTER TABLE userinfo ADD PRIMARY KEY (userid);

    在父表上查看,如下。

    francs=> \d userinfo
                              Table "francs.userinfo"
      Column  |              Type              | Collation | Nullable | Default
    ----------+--------------------------------+-----------+----------+---------
     userid   | integer                        |           | not null |
     username | character varying(64)          |           |          |
     ctime    | timestamp(6) without time zone |           |          |
    Partition key: HASH (userid)
    Indexes:
        "userinfo_pkey" PRIMARY KEY, btree (userid)
    Number of partitions: 4 (Use \d+ to list them.)

    查看子表,发现子表上也有了主键。

    francs=> \d userinfo_p0
                             Table "francs.userinfo_p0"
      Column  |              Type              | Collation | Nullable | Default
    ----------+--------------------------------+-----------+----------+---------
     userid   | integer                        |           | not null |
     username | character varying(64)          |           |          |
     ctime    | timestamp(6) without time zone |           |          |
    Partition of: userinfo FOR VALUES WITH (modulus 4, remainder 0)
    Indexes:
        "userinfo_p0_pkey" PRIMARY KEY, btree (userid)

    此主键为全局主键,子表间的主键之间不能有重复数据。

    测试二: 创建索引

    在父表上创建索引,如下

    francs=> CREATE INDEX idx_userinfo_username ON userinfo USING BTREE(username);
    CREATE INDEX

    发现父表和子表上都创建了索引,如下。

    francs=> \d userinfo
                              Table "francs.userinfo"
      Column  |              Type              | Collation | Nullable | Default
    ----------+--------------------------------+-----------+----------+---------
     userid   | integer                        |           | not null |
     username | character varying(64)          |           |          |
     ctime    | timestamp(6) without time zone |           |          |
    Partition key: HASH (userid)
    Indexes:
        "userinfo_pkey" PRIMARY KEY, btree (userid)
        "idx_userinfo_username" btree (username)
    Number of partitions: 4 (Use \d+ to list them.)
    
    francs=> \d userinfo_p1
                             Table "francs.userinfo_p1"
      Column  |              Type              | Collation | Nullable | Default
    ----------+--------------------------------+-----------+----------+---------
     userid   | integer                        |           | not null |
     username | character varying(64)          |           |          |
     ctime    | timestamp(6) without time zone |           |          |
    Partition of: userinfo FOR VALUES WITH (modulus 4, remainder 1)
    Indexes:
        "userinfo_p1_pkey" PRIMARY KEY, btree (userid)
        "userinfo_p1_username_idx" btree (username)

    测试三: 创建外键

    例如两张表,supplier_groups 和 supplier 分别用来存储供应商分组和供应商信, 如下。

    CREATE TABLE supplier_groups(
        group_id    int4 PRIMARY KEY,
        group_name  text
    );
    
    CREATE TABLE suppliers (
        supplier_id    int4 PRIMARY KEY,
        supplier_name  text,
        group_id       int4 REFERENCES supplier_groups(group_id)
    ) PARTITION BY HASH (supplier_id);

    创建子表

    CREATE TABLE suppliers_p0 PARTITION OF suppliers FOR VALUES WITH(MODULUS 4, REMAINDER 0);
    CREATE TABLE suppliers_p1 PARTITION OF suppliers FOR VALUES WITH(MODULUS 4, REMAINDER 1);
    CREATE TABLE suppliers_p2 PARTITION OF suppliers FOR VALUES WITH(MODULUS 4, REMAINDER 2);
    CREATE TABLE suppliers_p3 PARTITION OF suppliers FOR VALUES WITH(MODULUS 4, REMAINDER 3);

    查看子表

    查看子表,发现子表上也自动创建了外键。

    francs=> \d suppliers_p0
                   Table "francs.suppliers_p0"
        Column     |  Type   | Collation | Nullable | Default
    ---------------+---------+-----------+----------+---------
     supplier_id   | integer |           | not null |
     supplier_name | text    |           |          |
     group_id      | integer |           |          |
    Partition of: suppliers FOR VALUES WITH (modulus 4, remainder 0)
    Indexes:
        "suppliers_p0_pkey" PRIMARY KEY, btree (supplier_id)
    Foreign-key constraints:
        "suppliers_group_id_fkey" FOREIGN KEY (group_id) REFERENCES supplier_groups(group_id)

    总结

    以上演示了 PostgreSQL 11 分区表在父表上创建索引、主键、外键后,子表会自动创建相应索引、主键、外键,相比10版本极大减少了分区表维护工作量。

    参考

    新书推荐

    最后推荐和张文升共同编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级特性、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,涵盖大量实战用例!

    购买链接:https://item.jd.com/12405774.html
    _5_PostgreSQL_

    展开全文
  • 需求说明TEST情况说明:- 按月进行分区分区表- 未定义主键或唯一索引- 包含COL1,COL2,COL3,INSERTTIME四列现需要删除2019年3月31日当天存在的重复数据## 2.解决方法### 2.1 确认无重复数据的记录数```sqlSELECT ...

    ## 1.需求说明

    TEST表情况说明:

    - 按月进行分区的分区表

    - 未定义主键或唯一索引

    - 包含COL1,COL2,COL3,INSERTTIME四列

    现需要删除2019年3月31日当天存在的重复数据

    ## 2.解决方法

    ### 2.1 确认无重复数据的记录数

    ```sql

    SELECT COUNT(1) FROM (

    SELECT COL1,COL2,COL3,INSERTTIME FROM TEST PARTITION(P201903) A

    WHERE INSERTTIME >= DATE'2019-03-31' AND INSERTTIME < DATE'2019-04-01'

    GROUP BY COL1,COL2,COL3

    );

    ```

    ### 2.2 梳理需要筛选的数据

    由于原表A数据量特别大,此处新建一张表将需要处理的数据单独存放

    ```sql

    CREATE TABLE TEST_TMP NOLOGGING AS

    SELECT /*PARALLEL +8 */ A.*,A.ROWID ROWID_OLD FROM TEST PARTITION(P201903) A

    WHERE INSERTTIME >= DATE'2019-03-31' AND INSERTTIME < DATE'2019-04-01';

    ```

    ### 2.2 确认需要删除的数据

    理论上而言需要删除和需要保留的数据记录数应相等

    ```sql

    --需要删除的数据记录数

    SELECT COUNT(1) FROM TEST PARTITION(P201903) A WHERE ROWID IN (

    SELECT MIN(ROWID_OLD) ROWID_OLD FROM TEST_TMP

    WHERE INSERTTIME >= DATE'2019-03-31' AND INSERTTIME < DATE'2019-04-01'

    GROUP BY COL1,COL2,COL3,INSERTTIME

    HAVING COUNT(1) > 1)

    AND INSERTTIME >= DATE'2019-03-31' AND INSERTTIME < DATE'2019-04-01'

    --需要保留的数据记录数

    SELECT COUNT(1) FROM TEST PARTITION(P201903) A WHERE ROWID NOT IN (

    SELECT MIN(ROWID_OLD) ROWID_OLD FROM TEST_TMP

    WHERE INSERTTIME >= DATE'2019-03-31' AND INSERTTIME < DATE'2019-04-01'

    GROUP BY COL1,COL2,COL3,INSERTTIME

    HAVING COUNT(1) > 1)

    AND INSERTTIME >= DATE'2019-03-31' AND INSERTTIME < DATE'2019-04-01'

    ```

    ### 2.3 利用分批提交删除重复数据

    ```sql

    DECLARE

    TYPE ROWID_LIST IS TABLE OF UROWID INDEX BY BINARY_INTEGER;

    ROWID_INFOS ROWID_LIST;

    I NUMBER;

    CURSOR C_ROWIDS IS (SELECT MIN(ROWID_OLD) ROWID_OLD

    FROM TEST_TMP

    WHERE INSERTTIME >= DATE'2019-03-31' AND INSERTTIME < DATE'2019-04-01'

    GROUP BY COL1,COL2,COL3,INSERTTIME

    HAVING COUNT(1) > 1);

    BEGIN

    OPEN C_ROWIDS;

    LOOP

    --此处LIMIT后的值为分批提交的记录数,可以根据实际情况调整

    FETCH C_ROWIDS BULK COLLECT INTO ROWID_INFOS LIMIT 10000;

    FORALL I IN 1..ROWID_INFOS.COUNT

    --如下的DELETE语句为分批提交实际需要执行的部分

    DELETE FROM TEST WHERE ROWID=ROWID_INFOS(I);

    COMMIT;

    EXIT WHEN ROWID_INFOS.COUNT<10000;

    END LOOP;

    CLOSE C_ROWIDS;

    END;

    ```

    ### 2.4 确认无重复数据

    ```sql

    SELECT * FROM (

    SELECT COL1,COL2,COL3,INSERTTIME FROM TEST PARTITION(P201903) A

    WHERE INSERTTIME >= DATE'2019-03-31' AND INSERTTIME < DATE'2019-04-01'

    GROUP BY COL1,COL2,COL3,INSERTTIME

    HAVING COUNT(1)>1 )

    );

    ```

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69923980/viewspace-2676483/,如需转载,请注明出处,否则将追究法律责任。

    展开全文
  • mysql分区表添加含自增列的主键

    千次阅读 2017-01-11 11:56:32
    如果原中的分区字段上有重复的值,那么在添加主键的时候会提示错误,需要先把重复的记录删除,添加主键后,在插入 mysql> alter table p_hash add primary key(id, storeid); ERROR 1062 (23000): Duplicate ...

    mysql> CREATE TABLEp_hash(
    ->
    storeidmediumint(10) NOT NULL DEFAULT '0',
    ->
    storename` char(255) DEFAULT NULL
    -> ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
    -> /*!50100 PARTITION BY HASH (storeid)
    -> PARTITIONS 4 */;
    mysql> insert into p_hash values(1,’a’);
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into p_hash values(2,’b’);
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into p_hash values(3,’c’);
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into p_hash values(4,’d’);
    Query OK, 1 row affected (0.00 sec)
    添加一个id字段,位置在第一位
    alter table p_hash add column id int not null first;
    添加主键
    alter table p_hash add primary key(id, storeid);
    修改id为自增
    alter table p_hash change id id int not null auto_increment;
    mysql> select * from p_hash;
    +—-+———+———–+
    | id | storeid | storename |
    +—-+———+———–+
    | 1 | 4 | d |
    | 2 | 1 | a |
    | 3 | 2 | b |
    | 4 | 3 | c |
    +—-+———+———–+
    4 rows in set (0.00 sec)
    mysql> show create table p_hash;
    ———+
    | Table | Create Table
    | p_hash | CREATE TABLE p_hash (
    id int(11) NOT NULL AUTO_INCREMENT,
    storeid mediumint(10) NOT NULL DEFAULT ‘0’,
    storename char(255) DEFAULT NULL,
    PRIMARY KEY (id,storeid)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
    /*!50100 PARTITION BY HASH (storeid)
    PARTITIONS 4 */ |
    +——–+———————————————–

    如果原表中的分区字段上有重复的值,那么在添加主键的时候会提示错误,需要先把重复的记录删除,添加主键后,在插入
    mysql> alter table p_hash add primary key(id, storeid);
    ERROR 1062 (23000): Duplicate entry ‘0-1’ for key ‘PRIMARY’
    `

    如果存在重复的数据,采用上面的方式,对于原表变动较大,线上业务不可能接受,使用下面的方式我认为更好些。
    创建一个包含自增主键与原表结构相同的表。确保原表没有新的数据插入,将所有的数据插入到新表中,互换2个表的名字。这种对于insert操作不频繁的情况下是可以接受的,如果原表上的insert很多,那么重命名表的过程可能失败,需要考虑别的方案

    mysql> CREATE TABLE `p_hash` (
        ->
        -> `storeid` mediumint(10) NOT NULL DEFAULT '0',
        -> `storename` char(255) DEFAULT NULL
        ->
        -> ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
        -> /*!50100 PARTITION BY HASH (storeid)
        -> PARTITIONS 4 */;
    Query OK, 0 rows affected (0.05 sec)
    
    mysql> insert into p_hash values(1,'a');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into p_hash values(1,'b');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into p_hash values(2,'c');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from p_hash;
    +---------+-----------+
    | storeid | storename |
    +---------+-----------+
    |       1 | a         |
    |       1 | b         |
    |       2 | c         |
    +---------+-----------+
    3 rows in set (0.00 sec)
    
    mysql> DROP TABLE IF EXISTS `p_hash2`;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> CREATE TABLE `p_hash2` (
        -> `id` int(10) NOT NULL AUTO_INCREMENT,
        -> `storeid` mediumint(10) NOT NULL DEFAULT '0',
        -> `storename` char(255) DEFAULT NULL,
        -> PRIMARY KEY (`id`,`storeid`)
        -> ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
        -> /*!50100 PARTITION BY HASH (storeid)
        -> PARTITIONS 4 */;
    Query OK, 0 rows affected (0.07 sec)
    
    mysql> insert into p_hash2 select storeid,storename from p_hash;
    ERROR 1136 (21S01): Column count doesn't match value count at row 1
    mysql> insert into p_hash2(storeid,storename) select storeid,storename from p_hash;
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> select * from p_hash2;
    +----+---------+-----------+
    | id | storeid | storename |
    +----+---------+-----------+
    | 11 |       1 | a         |
    | 12 |       1 | b         |
    | 13 |       2 | c         |
    +----+---------+-----------+
    3 rows in set (0.00 sec)
    
    mysql> show create table p_hash2;
    +---------+-----------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------
    ------------+
    | Table   | Create Table
    
                |
    +---------+-----------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------
    ------------+
    | p_hash2 | CREATE TABLE `p_hash2` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `storeid` mediumint(10) NOT NULL DEFAULT '0',
      `storename` char(255) DEFAULT NULL,
      PRIMARY KEY (`id`,`storeid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8
    /*!50100 PARTITION BY HASH (storeid)
    PARTITIONS 4 */ |
    +---------+-----------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------
    ------------+
    1 row in set (0.00 sec)
    
    mysql> show create table p_hash;
    +--------+------------------------------------------------------------------------------------
    -----------------------------------------------------------------+
    | Table  | Create Table
                                                                     |
    +--------+------------------------------------------------------------------------------------
    -----------------------------------------------------------------+
    | p_hash | CREATE TABLE `p_hash` (
      `storeid` mediumint(10) NOT NULL DEFAULT '0',
      `storename` char(255) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    /*!50100 PARTITION BY HASH (storeid)
    PARTITIONS 4 */ |
    +--------+------------------------------------------------------------------------------------
    -----------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> alter table p_hash rename p_hash_temp;
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> alter table p_hash2 rename p_hash;
    Query OK, 0 rows affected (0.02 sec)
    
    展开全文
  • 1、查询是否有主键 select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name = '表明' 2、删除重复数据 ...

    1、查询表是否有主键
    select cu.* from user_cons_columns cu, user_constraints au where
    cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and
    au.table_name = '表明'

    2、删除重复数据

    delete from 表名 s  where 字段  in
    (select 字段 from 表名 group by 字段 having count(字段)>1)
      and ROWID   IN (select min(rowid) from 表名 GROUP BY 字段 HAVING COUNT(*) > 1) 

    展开全文
  • 现象:oracle添加主键,却可以插入重复的情况 原因:oracle添加主键需要手动开启,不同于mysql。 解决方法:https://blog.csdn.net/wm5920/article/details/80755437
  • postgresql 不设置主键问题

    千次阅读 2018-11-22 10:51:58
    (postgresql 使用pgadmin不能修改无主键数据,navicat 在批量复制数据时,也会因为表格没有主键导致多行数据覆盖,和复制失败等情况,当前使用insert语句是没有问题的 ) 实在是想不明白当时哪位大...
  • oracel分区表的索引

    2020-04-15 09:44:24
    很多时候,都会出现原系统数据重复,抽取到ods系统之后,通过ods推给下游系统之后,下游系统跑批才会发现数据重复问题,然后再让原系统数据重跑之后,重推给ods,ods重推给下游系统,这一系列的过程,才能完成一次...
  • 例如,在分析新增过程中,可以通过平台、手机厂商、版本号等维度描述用户的属性。 维度所包含的标识维度的列成为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。例如,在sql...
  • 实战 PostgreSQL 分区表

    2020-03-04 21:56:16
    我们在之前的《实战PostgreSQL》 详细描述的 PostgreSQL 的版本差别、JSON/JSONB、全文检索等相关信息,PostgreSQL 远比上述三点内容,这篇文章将实战 PostgreSQL 分区表。 01,什么是分区表? 如下图,分区表就是...
  • 一, 分区概念  分区允许根据指定的规则,跨文件系统分配单个的多个部分。的不同部分在不同的位置被存储...例如可以将一个通过年份划分成若干个分区。 Hash(哈希)–这中模式允许通过对表的一个或多个列的Has
  • 环境:tidb、linux1、先确认主键、创建分区表(用于代替原)SELECT column_name FROM INFORMATION_SCHEMA.`KEY_COLUMN_USAGE` WHERE table_name='wpt_dzxx_chdzb_20200813' AND constraint_name='PRIMARY';...
  • 表分区一般指分区表,将中的数据在物理上存放到多个“空间”(物理文件上)的这个过程称为表分区。 二、什么时候用? 在构建千兆字节数据系统或超高可用性系统时,当数据量大小达到2G时推荐使用表分区。  2G...
  • MySQL分区表概述我们经常遇到一张里面保存了上亿甚至过十亿的记录,这些里面保存了大量的历史记录。 对于这些历史数据的清理是一个非常头疼事情,由于所有的数据都一个普通的表里。所以只能是启用一个或多个带...
  • 所以分区表可以看成合并的升级,是做了性能优化的智能化的分表,不能单独操作子。  MySQL在创建时使用PARTITION BY子句定义每个分区存放的数据。在执行查询时,优化器会根据分区定义过滤那些没有用到的分区...
  • 在分库分表环境中,由于中数据同时存在不同数据库中,主键值平时使用的自增长将无用武之地,某个分区数据库自生成的ID无法保证全局唯一。因此需要单独设计全局主键,下面是几种生成唯一id的方式方法:1)UUIDUUID...
  • --创建测试 create table test2 ( TestId UNIQUEIDENTIFIER not null , AddedOn varchar(50) not null, Action varchar(50) not null, Item int not null, Parent int not null, Param int not null, ...
  • mysql表分区

    2019-11-04 15:55:31
    mysql处理少量数据非常方便,但是当...前期阶段可以先对表进行水平或垂直拆分处理,后期可能就需要进行分库等操作了,本文只是对表的分区进行总结。 mysql的表分区包括range、list、hash、hash线性、key分区等等...
  • MySQL 8.0 表分区

    2021-12-20 23:39:44
    mysql8.0,分区
  • kudu表分区

    千次阅读 2020-03-13 14:27:35
    kudu的数据结构是列式存储,但也支持像mysql那样进行检索,而且与spark、impala等现有的应用完美契合,可以说是是大数据平台上支持快速sql查询的上佳选择了。它的好处这里不多说啦,公司的大数据查询有一部分是...
  • db2 数据表分区

    2019-10-03 12:03:03
    1. 表分区说明 在db2数据库中,可对数据按某个字段进行分区分区好处是:可扩展的存储能力、对于大量数据使用分区字段可提高查询效率。表分区不同于数据库分区,需要在创建的时候设置分区逻辑。  在...
  • 排查到最后,发现是分区表导致id不唯一,加上Gap锁导致的。下面简单分析一下。1.场景重现1.1 没有分区的场景先建一个没有分区1 CREATE TABLEstudent (2 `id` INT NOT NULL PRIMARY KEY,3 `name` VARCHAR ...
  • 分区和手动分表对比 手动分表-----------------分区 多张数据------------一张数据 重复数据的风险-一、分区概念分区允许根据指定的规则,跨文件系统分配单个的多个部分。的不同部分在不同的位置被存储为...
  • 在接受为期5天的达梦数据库DCP培训后,对达梦数据库这...一 、 达梦的分区表主要有一下几种方式:范围分区、哈希分区、列表分区、组合分区 1. 范围(range)水平分区:对表中的某些列上值的范围进行分区,根据某个值的...
  • SQL SERVER 表分区技术

    千次阅读 2018-04-08 08:08:54
    表分区就是把一个数据库文件拆分成多个文件,并放到不同的文件组甚至是不同的磁盘中,但是在外界访问时看到的还是一个数据库,这样不同的磁盘不同的文件组可以提高并发访问效率,而对于开发技术人员来说面对还...
  • 为了对重复数据进行实验,下面建一个设计不太好(没有主键并插入了一些重复数据: create database testdb use testdb ; go create table DupsNoPK (Col1 int Null, Col2 char(5) Null ); go insert ...
  • 一般的情况下,主键是必要的,没有主键表可以说是不符合设计规范的。SELECT table_name FROM User_tablestWHERE NOTEXISTS(SELECT table_name FROM User_constraints c WHERE constraint_type ='P' AND t....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,216
精华内容 10,886
关键字:

表分区可以主键重复