【发布时间】:2022-01-15 14:39:18
【问题描述】:
我知道我可以为单列和复合列创建 索引。 A 我也可以在某些表达式上创建一个 index:
- 创建索引在一个按条件搜索数据的表达式上,首先我指定字段首先需要排序,然后按条件输出结果,基于这个表达式,一个索引已构建。
(就像使用 Couchbase 时的索引)
CREATE INDEX `us_users_sorted` ON
`user_profile`(
`_class`,
`enabled`,
`countryCode`,
`firstName` DESC,
`lastName` DESC)
WHERE (((`_class` = "com.cb.demo.userProfile.model.UserEntity")
and (`enabled` = true))
and (`countryCode` = "US"))
但我找不到这方面的信息:
- 如果我创建了一条记录,我是否必须在同一事务中再次调用以为此数据创建索引(索引如上所述)?
- 删除记录时,是否还必须再次触发创建此索引?
- 更新时,我也必须这样做吗?
- 如果我使用 Spring Data Jpa,是否应该通过 nativeQuery() 执行此操作?
我看不出把它分成几个问题有什么意义,实际上这是一个关于使用 Spring 和关系数据库处理索引的问题。
在使用复杂的关系数据库索引(我不是指 Couchbase)和 Spring data jpa(spring boot )?
如果可能,请举个例子回答
【问题讨论】:
-
我不知道我是否理解你的问题。一旦创建了索引,它就会一直存在,直到索引被删除(直到表上的一行被删除)。并且数据库引擎将保持更新并与表中的数据保持一致。你不需要做任何事情。
-
@Augusto,也就是说,如果我理解正确的话,当我们创建一次索引时,DBMS在删除、创建和更新操作过程中,如果字段基于哪个字段,将自动重新创建索引创建的索引受到影响,不需要从代码中管理吗?
-
数据库会为你维护索引。您不必编写代码来执行此操作,这是标准的数据库功能。
标签: java postgresql spring-boot spring-data-jpa