网站首页 > 精选文章 正文
GBASE南大通用分享的示例:
使用 INDEX DISABLED 创建外键约束
假设在以下示例中的 parent 表和 child 表具有一个主键约束和外键约束,且存储在这些表中您 的数据满足下列条件:
parent 表只有少量行。
child 表由=有百万条行。
child 表中外键只有一些基于 parent 表的主键的不同的可能值。 该示例显示了如何使用 ALTER TABLE ADD CONSTRAINT 语句的 INDEX DISABLED 选项。
CREATE TABLE parent(c1 INT, c2 INT, c3 INT);
CREATE UNIQUE INDEX idx_parent_c1 ON parent(c1);
ALTER TABLE parent ADD
CONSTRAINT PRIMARY KEY(c1)
CONSTRAINT cons_parent_c1;
CREATE TABLE child(x1 INT, x2 INT, x3 VARCHAR(32));
CREATE INDEX idx_child_x1 ON child(x1);
ALTER TABLE child ADD
CONSTRAINT(FOREIGN KEY(x1) REFERENCES parent(c1)
CONSTRAINT cons_child_x1 INDEX DISABLED);
在以上示例中,
cons_parent_c1 是 parent 表的一个主键约束,
cons_child_x1 是 child 表的一个外键约束,
idx_parent_c1 是唯一索引,且被 cons_parent_c1 约束共享,
并且 idx_child_x1 是被 cons_child_x1 约束共享的索引。 子表上的数据操纵语言操作(例如:UPDATE 、DELETE 、INSERT 和 MERGE )不能使用被外 键约束共享的 idx_child_x1 索引,因为该索引现在是禁用的。
然而,对于某些含有主键和外键依赖的表,查询优化器可能会在执行计划中选择基于 WHERE 子 句子表上的其它索引。
如上所述,在外键定义中使用 INDEX DISABLED 选项只有在子表非常大时才可能提高性能,通 常在数据仓库应用的情况下。不建议在小的表上使用该语法选项操作。
猜你喜欢
- 2025-07-24 数据库设计规范——3. SQL语句(sql数据库程序设计)
- 2025-07-24 数据库事务以及事务的四个特性(数据库中的事务)
- 2025-07-24 一文快速掌握MongoDB(mongodb 入门)
- 2025-07-24 为啥不推荐使用外键?(为什么不能添加外键约束)
- 2025-07-24 阿里云代理商:关系型数据库与NoSQL数据库的区别与选择
- 2025-07-24 多对多关系的数据库设计(数据库中多对多的关系设计)
- 2025-07-24 Java面试题:数据库优化策略有哪些?
- 2025-07-24 【推荐】一款实用且跨平台的数据库管理神器,支持Web浏览器
- 2025-07-24 数据库系统原理:数据插入(数据库插数据语句)
- 2025-07-24 第四篇 数据库MySQL(mysql数据库sid)
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)