目标是尽可能快地进行查询。
Postgres表包含10.000.000条记录,每条记录有30种不同的属性。
CREATE TABLE films (
code char(5) CONSTRAINT firstkey PRIMARY KEY,
title varchar(40) NOT NULL,
did integer NOT NULL,
date_prod date,
kind varchar(10),
len interval hour to minute
-- and ~25 more columns
);
用户以非常具体的方式过滤数据,但始终基于一系列条件。
例如,用户A需要对通过列code
,title
,did
和date_prod
过滤的10毫米记录进行分页,并按列date_prod
排序和title
。他只是表演了几个类似的组合,但他每天重复搜索很多次。因此,重点是:条件复杂,但各种组合很小。通常每个用户只需3-5个。
可能这也很重要:用户只希望看到一些列,而不是所有列。这与他在查询中使用的条件有关。
此表中的记录每天都会更新多次,因此每次用户都会看到更新的数据,因此缓存在此处不起作用。
此应用程序由少量用户使用(少于10,000)并且永远不会超过此数量。
我需要的是尽可能快地进行查询。没关系,如果每次第一次用户创建新搜索(一堆查询条件+非常具体的列集)时,将花费几秒钟来给出结果。但是,如果此用户保存了这组条件和列,我需要尽快进行此搜索的所有进一步重复,尽管数据一直在更新。
我怀疑索引每列是个好主意。那么,我该怎么做? PostgreSQL有材料观点?可能是MongoDB或其他nosql解决方案在某种程度上会更好地工作吗?