【发布时间】:2017-01-03 00:05:20
【问题描述】:
我正在使用 PostgreSQL 和 Hibernate 开发 Spring-MVC 应用程序,其中我有几个表的行数超过 10 万(10 万)。这些表,我有 95% 的时间只访问最新数据,并且筛选所有这些行非常耗时。很多时候查询规划器甚至不使用索引(原因我不知道)。
然后我想到了每周拆分数据库表,这样我们就可以先访问最近几个月的数据库,然后如果用户请求,那么以前表的更多结果将直接添加到请求中。
我们执行的大多数查询都需要 JOIN,因为表是一对多映射的。
行数大于 10 万的模型文件之一。
型号:
@Entity
@Table(name = "groupnotehistory")
public class GroupNoteHistory {
@Id
@Column(name = "mhistoryid")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "mhistory_gen")
@SequenceGenerator(name = "mhistory_gen", sequenceName = "mhistory_seq")
private int mhistoryid;
@Column(name = "mnoteeditdate",columnDefinition = "timestamp without time zone")
private Timestamp mnoteEditDate;
@Column(name = "oldheadline", columnDefinition = "character varying")
@Type(type="jasyptHibernateEncryptor")
private String oldHeadLine;
@Column(name = "oldtext", columnDefinition = "character varying")
@Type(type="jasyptHibernateEncryptor")
private String oldText;
@Column(name = "newnotetext", columnDefinition = "character varying")
@Type(type="jasyptHibernateEncryptor")
private String newNoteText;
@Column(name = "newnoteheadline", columnDefinition = "character varying")
@Type(type="jasyptHibernateEncryptor")
private String newNoteHeadline;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "mnoteid", nullable = false)
private GroupNotes mhistory;
// Getters and setters
}
Hibernate 是否提供任何策略或方法来解决此问题?谢谢你。
【问题讨论】:
-
听起来这可能是考虑替代数据存储的好时机,例如仅附加的日志存储。
-
@chrylis : 我如何查询它们或从中检索特定的数据集?
标签: java database spring postgresql hibernate