【问题标题】:When and how do I have to create an Index in Grails?何时以及如何在 Grails 中创建索引?
【发布时间】:2013-07-04 22:35:34
【问题描述】:

在 Grails 中,您可以将 custom indices 添加到您的域类中。

  1. Grails 是否默认为我的表生成索引?
  2. 是否有规则我必须将哪些列用于我的索引?
  3. 设置索引后我的查询是否会改变?

【问题讨论】:

    标签: database hibernate grails grails-orm grails-2.0


    【解决方案1】:

    这不是一个真正的 Grails 问题,除了关于 Grails 何时以及是否创建索引的部分。您需要它们,就像在任何使用数据库的应用程序中一样 - 创建它们以提高查找性能。

    Grails 实际上并没有创建任何东西,Hibernate 在生成创建表的 DDL 时会这样做。您可以通过运行grails schema-export 随时查看此DDL - 生成的文件将为target/ddl.sql

    通常,您会看到通常会创建唯一索引的唯一约束,而在 MySQL 和其他一些数据库中,您会看到在外键上创建索引(但出于某种原因,Oracle 没有这样做)。

    如您在问题中所述,有一些映射支持可以让 Hibernate 创建索引,但通常您需要自己创建它们,因为它们通常是特定于数据库的。为此使用http://grails.org/plugin/database-migration 插件。

    【讨论】:

    • 是否有规则我必须将哪些列用于我的索引?设置索引后,我的查询会改变吗?
    • 一般来说,PK 和 FK 应该涵盖大多数情况。但是深入了解如何建立索引是一个相当复杂的话题。这取决于很多事情,您需要经验才能知道哪个索引可以提供帮助。如果你会研究索引,我建议你也建议分区。如果您知道如何同时使用这两种方法,您将大大提高应用的性能
    【解决方案2】:

    通常,您将对属于频繁查询和执行成本高的查询的一部分的列使用索引。这将在使用任何关系数据库和任何开发框架时发生。

    关于 Grails,我发现这篇文章对如何在 Grails 中定义索引非常有用:http://grails.asia/grails-how-to-create-custom-table-index-or-composite-index

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 2015-06-18
      • 1970-01-01
      • 2014-09-01
      • 2015-08-01
      • 1970-01-01
      相关资源
      最近更新 更多