NULL'ların satır için postgresql tuple üstbilgisinde yalnızca 1 bit aldıklarını belgelemekle birlikte, NULL'lerin NDE'ler null yapılabilen bir sütunun INDEX'inde ne kadar yer kaplar (tuple değil, dizin)? Dizin içinde, tuple ile aynı 1 bit mi, yoksa tam sütun veri tipi boyutu mu (EG: integer = 4 bayt)?NULLs, postgresql dizinlerinde yer kaplıyor mu?
Sorunun bağlamı, 3 referans sütununa (EG: foo_id, bar_id ve baz_id) sahip bir postgresql tablomuz ve herhangi bir satır için, bu sütunlardan yalnızca birinin bir değeri olacaktır (diğer 2 sütun NULL ol.) Ancak, endekslenecek 3 sütuna ihtiyacım var. Her sütunun bir tamsayı olduğunu varsayarak (postgresql'de 4 bayt), her satır 4 bayt (boş olmayan sütun için) artı 2 bit (2 boş sütun için) içermelidir. Ancak, 3 sütunun tamamı için dizinler ekleyeceksem, 3 endeks için depolama 12 bayt (dizin, boş bir değer için tam 4 bayt alırsa) veya aynı 4 bayt + 2 bit olur. Kendini tuple.
Eh, bu kendinize kısmi olarak cevap verebilmenizin bir yolu - veri türü tarafından istenen sayıda baytla (sadece) temsil edilemezler. Int örneğinizde, her 4 baytlık kombinasyon geçerli bir int değerini temsil eder - bu nedenle, bir null'un aynı dört baytta kodlanmasının bir yolu yoktur. –