我应该何时拆分表以加快查找速度?

时间:2019-06-23 09:41:43

标签: sql postgresql

我有一个Postgres表,其中有500k行,只能读取(很多用户读取)。我想知道是否将数据库按行的“出生日期”一分为二会更有效。

我有一半的桌子要查询得多(出生日期> 40)。因此,按生日将其拆分会允许我直接检查一个较小的子集(只需检查我的元素是否大于40)即可。这种方法有什么改善吗?

3 个答案:

答案 0 :(得分:2)

索引可以解决您的问题。通过存储表的不同部分来拆分表只会使事情复杂化。

答案 1 :(得分:1)

SiWM是正确的。不要拆分您的表,尤其是考虑到按今天的标准,500k并不是很大的数目。作为SiWM的建议的补充,我建议您在查询表时检查WHERE子句中的哪些列,并确保将它们编入索引。

答案 2 :(得分:1)

您还可以使用所使用的主索引(通过cron作业)对表进行聚簇,尤其是在需要从单个查询返回几行的情况下。

https://www.postgresql.org/docs/9.1/sql-cluster.html

初始设置:

    CLUSTER [VERBOSE] table_name [ USING index_name ]

重新集群:

    CLUSTER table_name