使用 Spring boot + Postgresql 时使用索引
Working with indexes when using Spring boot + Postgresql
我知道我可以为单列和复合列创建 索引。我也可以在某些表达式上创建 index:
- 在表达式上创建一个索引,根据某种条件搜索数据,而首先我指定字段首先需要排序,然后根据条件输出结果,并且基于这个表达式,构建了一个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"))
但是我找不到这方面的信息:
- 如果我创建一条记录,我是否必须在同一事务中再次调用以为该数据创建一个索引( index 如上所述) ?
- 删除一条记录时,我是否也必须再次触发创建此索引?
- 更新时,我也必须这样做吗?
- 如果我使用 Spring Data Jpa,我是否应该通过 nativeQuery() 执行此操作?
我看不出将其分成几个问题的意义,事实上,这是一个关于使用 Spring 和关系数据库处理索引的问题。
也许有人在网上看到了一个详细的例子,在使用复杂的关系数据库索引(我不是说 Couchbase)和 Spring 数据 jpa (spring 开机)?
如果可以的话,请举例说明
只需要为所有已有的记录建立一次索引。之后,如果 DB 记录是 added/updated/deleted,它只需要从索引中 add/update/removed 这样的记录,而不是为所有记录重新创建整个索引。
你可以认为索引就像存在另一个 HashMap
一样,它允许你通过一些键快速检索记录。但是每当与该索引相关的 table 中的 added/updated/deleted 记录时,数据库将帮助自动维护此 HashMap 的内容。创建一个索引就像你初始化这个 HashMap 的内容一样只做了一次。
因此您不应通过本机查询创建索引。您应该在启动应用程序之前预先单独创建它。就像你创建一个数据库 table.
我知道我可以为单列和复合列创建 索引。我也可以在某些表达式上创建 index:
- 在表达式上创建一个索引,根据某种条件搜索数据,而首先我指定字段首先需要排序,然后根据条件输出结果,并且基于这个表达式,构建了一个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"))
但是我找不到这方面的信息:
- 如果我创建一条记录,我是否必须在同一事务中再次调用以为该数据创建一个索引( index 如上所述) ?
- 删除一条记录时,我是否也必须再次触发创建此索引?
- 更新时,我也必须这样做吗?
- 如果我使用 Spring Data Jpa,我是否应该通过 nativeQuery() 执行此操作?
我看不出将其分成几个问题的意义,事实上,这是一个关于使用 Spring 和关系数据库处理索引的问题。
也许有人在网上看到了一个详细的例子,在使用复杂的关系数据库索引(我不是说 Couchbase)和 Spring 数据 jpa (spring 开机)?
如果可以的话,请举例说明
只需要为所有已有的记录建立一次索引。之后,如果 DB 记录是 added/updated/deleted,它只需要从索引中 add/update/removed 这样的记录,而不是为所有记录重新创建整个索引。
你可以认为索引就像存在另一个 HashMap
一样,它允许你通过一些键快速检索记录。但是每当与该索引相关的 table 中的 added/updated/deleted 记录时,数据库将帮助自动维护此 HashMap 的内容。创建一个索引就像你初始化这个 HashMap 的内容一样只做了一次。
因此您不应通过本机查询创建索引。您应该在启动应用程序之前预先单独创建它。就像你创建一个数据库 table.