一般动作
登录
Wiki: BROPEN ▼: Document Index
»
Space: FAQ ▼: Document Index
»
Page: 可以自动在所有外键上创建索引吗
搜索
zh
页面动作
导出 ▼: 以PDF格式导出 以RTF格式导出 以HTML格式导出
更多动作 ▼: 打印预览 察看源码
欢迎进入Wiki » FAQ » 可以自动在所有外键上创建索引吗?

# 可以自动在所有外键上创建索引吗?

在2014-08-05 11:00上被李小翔修改
评论 (0) · 附件 (0) · 记录 · 信息

一般来说，数据库中建索引有利有弊，就外键来说，Oracle数据库的建议如下：

- 如果外键不添加索引， 以下3种情况会导致修改父表时锁住子表

1、更新父表主键，子表会被锁住

2、删除父表一行， 整个子表会被锁住

3、合并到父表，子表会被锁住。（9i，10G是这样，11G不会）。

- 如果满足以下三种情况，则不需要在外键建立索引

1、没有从父表删除数据

2、没有更新父表主键

3、没有父表关联到子表

所以，一个典型的观点就是，凡是外键都创建索引，利大于弊。

Grails 中默认情况下是不会给外键创建索引的（某些数据库会），因此，BroToolkit 中添加了配置：

/** 是否在所有外键上创建索引 */
bropen.toolkit.gorm.foreignkey.index.all = false

该配置默认为 false，即不自动创建外键索引，如果在 Config.groovy 将其设为 true，则会自动在所有外键上创建名称前缀为 IFK_ 的索引。

标签： BroToolkit dataSource
在2014-08-05 10:59上被李小翔创建

- 评论 （0）
- 附件 （0）
- 记录
- 信息

# 快速链接

- 首页
- 新闻动态
- FAQ

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号