我已经阅读了几个关于如何在我的数据库中创建索引列的教程。从Grails 文档中,我知道您必须定义一个索引列。
我的问题是:
如何处理这些索引列?我必须在查询中使用它们还是 Hibernate 为我做这项工作?
我如何知道索引应该包含哪些列?
firstName column: 'First_Name', index: 'Name_Idx'
和 有什么区别matrix indexColumn: [name: "the_matrix", type: Integer]
?
如何处理这些索引列?我必须在查询中使用它们还是 Hibernate 为我做这项工作?
您可以像对待数据库中的索引一样对待索引。它将提高数据检索操作的速度。你不需要做任何事情让它工作,因为hibernate在最后生成sql,你的数据库将决定如何使用索引。
How do I know which columns an index should contain?
取决于您对数据库的了解以及如何优化查询,简单的事情是您更频繁地检索数据的列可能需要索引。如果您总是搜索电话号码或姓名,请在它们上创建索引。所有的数据库索引规则也都在这里应用。
What is the difference between:
firstName column: 'First_Name', index: 'Name_Idx' and
matrix indexColumn: [name: "the_matrix", type: Integer]
第一个是名为“Name_Idx”的索引的名称,它是可选的。您可以通过定义类型和其他信息来使用第二个添加更多信息。如果您允许 grails 为您生成数据库,它将使用这些信息来创建它们。
更新
根据您的问题,要创建复合索引,请查看此链接
该名称是您在此处构建索引的列的名称。建立索引是更多的数据库问题,如果需要,您需要制作它们。我敢肯定,如果您使用 sql 标签发布该内容,您可以找到更多信息。如果您认为不需要它们,现在就不要这样做,如果应用程序遇到性能问题,那么您可以考虑在查询上建立索引。仅供参考:默认情况下,Grails 将为您的主键创建索引