【发布时间】:2013-07-04 22:35:34
【问题描述】:
在 Grails 中,您可以将 custom indices 添加到您的域类中。
- Grails 是否默认为我的表生成索引?
- 是否有规则我必须将哪些列用于我的索引?
- 设置索引后我的查询是否会改变?
【问题讨论】:
标签: database hibernate grails grails-orm grails-2.0
在 Grails 中,您可以将 custom indices 添加到您的域类中。
【问题讨论】:
标签: database hibernate grails grails-orm grails-2.0
这不是一个真正的 Grails 问题,除了关于 Grails 何时以及是否创建索引的部分。您需要它们,就像在任何使用数据库的应用程序中一样 - 创建它们以提高查找性能。
Grails 实际上并没有创建任何东西,Hibernate 在生成创建表的 DDL 时会这样做。您可以通过运行grails schema-export 随时查看此DDL - 生成的文件将为target/ddl.sql。
通常,您会看到通常会创建唯一索引的唯一约束,而在 MySQL 和其他一些数据库中,您会看到在外键上创建索引(但出于某种原因,Oracle 没有这样做)。
如您在问题中所述,有一些映射支持可以让 Hibernate 创建索引,但通常您需要自己创建它们,因为它们通常是特定于数据库的。为此使用http://grails.org/plugin/database-migration 插件。
【讨论】:
通常,您将对属于频繁查询和执行成本高的查询的一部分的列使用索引。这将在使用任何关系数据库和任何开发框架时发生。
关于 Grails,我发现这篇文章对如何在 Grails 中定义索引非常有用:http://grails.asia/grails-how-to-create-custom-table-index-or-composite-index
【讨论】: