Representing Sparse Data in PostgreSQL

前端 未结 4 1468
盖世英雄少女心
盖世英雄少女心 2021-01-31 04:58

What\'s the best way to represent a sparse data matrix in PostgreSQL? The two obvious methods I see are:

  1. Store data in a single a table with a separate column f

4条回答
  •  时光说笑
    2021-01-31 05:10

    A NULL value will take up no space when it's NULL. It'll take up one bit in a bitmap in the tuple header, but that will be there regardless.

    However, the system can't deal with millions of columns, period. There is a theoretical max of a bit over a thousand, IIRC, but you really don't want to go that far.

    If you really need that many, in a single table, you need to go the EAV method, which is basically what you're saying in (2).

    If each entry has only a relatively few keys, I suggest you look at the "hstore" contrib modules which lets you store this type of data very efficiently, as a third option. It's been enhanced further in the upcoming 9.0 version, so if you are a bit away from production deployment, you might want to look directly at that one. However, it's well worth it in 8.4 as well. And it does support some pretty efficient index based lookups. Definitely worth looking into.

提交回复
热议问题