Ifølge PostgreSQL Limits er det "250 - 1600 afhængigt af kolonnetyper". Se note under tabellen. Kolonnetyperne påvirker det, fordi rækker i PostgreSQL højst kan være 8 kb (én side) brede, de kan ikke spænde over sider. Store værdier i kolonner er OK, fordi TOAST håndterer det, men der er en grænse for, hvor mange kolonner du kan passe ind i, der afhænger af, hvor brede de anvendte ikke-TOAST-datatyper er.
(Dette refererer strengt taget til kolonner, der kan gemmes i rækker på disken; forespørgsler kan muligvis bruge bredere kolonnesæt end dette. Jeg anbefaler ikke at stole på det.)
Hvis du overhovedet overvejer at nærme dig kolonnegrænserne, vil du sandsynligvis få problemer.
Kortlægning af regneark til relationelle databaser virker som den enkleste ting i verden - kortlæg kolonner til kolonner, rækker til rækker, og gå videre. Ret? I virkeligheden er regneark enorme freeform-monstre, der ikke håndhæver nogen struktur og kan være virkelig uheldige. Relationelle databaser er designet til at håndtere masser flere rækker, men til en pris; i tilfælde af PostgreSQL er en del af disse omkostninger en begrænsning af, hvor brede den kan lide, at disse rækker skal være. Når du står over for regneark oprettet af Joe User, kan dette være et reelt problem.
En "løsning" er at nedbryde dem til EAV, men det er usigeligt langsomt og grimt at arbejde med. Bedre løsninger er at bruge arrays, hvor det er muligt, sammensatte typer, hstore
, json, xml osv.
I sidste ende er det dog nogle gange det bedste svar at analysere regnearket ved hjælp af et regneark.