The one thing I did test back in the days (64 MB RAM, PG 7.1) was to
search for a patient among about 150k records. That was
near instantaneous.
Performance is only really a problem when joins are performed by the db. If joins occur on non indexed values then this can really decrease performance. I've seen joins take >30 secs to occur without indexing and brought down to sub seconds with indexes.
No doubt the searching for patients did not require any joins and was just done by querying on maybe first name or last name.
DB performance tuning with large datasets usually always uncovers some accidentally missed indexes. Maybe it is a good exercise for Ahmad and his uni buddies to undertake :-) They will need some sample queries with joins which they can simply find from the code.
Dave.