Re: Compare rows

Josh Berkus <josh@agliodbs.com>

From: Josh Berkus <josh@agliodbs.com>
To: Greg Spiegelberg <gspiegelberg@cranel.com>, PgSQL Performance ML <pgsql-performance@postgresql.org>
Date: 2003-10-08T23:11:59Z
Lists: pgsql-performance
Greg,

> You lost me on that one.  What's a "vertical child table"?

Currently, you store data like this:

id	address	uptime	speed	memory	tty
3	67.92	0.3		11.2		37		6
7	69.5		1.1		NULL	15		NULL
9	65.5		0.1		NULL	94		2

The most efficient way for you to store data would be like this:

main table
id	address
3	67.92
7	69.5
9	65.5

child table
id	value_type	value
3	uptime		0.3
3	speed		11.2
3	memory		37
3	tty			6
7	uptime		1.1
7	memory		15
9	uptime		0.1
9	memory		94
9	tty			2

As you can see, the NULLs are not stored, making this system much more 
efficient on storage space.

Tommorrow I'll (hopefully) write up how to query this for comparisons.   It 
would help if you gave a little more details about what specific comparison 
you're doing, e.g. between tables or table to value, comparing just the last 
value or all rows, etc.

-- 
-Josh Berkus
 Aglio Database Solutions
 San Francisco