I have a table whose columns are varchar(50) and a float. I need to (very quickly) look get the float associated with a given string. Even with ind
I'd recommend simply a hash index:
create index mytable_phrase_idx on mytable using hash(phrase);
This way queries like
select floatval from mytable where phrase='foo bar';
will be very quick. Test this:
create temporary table test ( k varchar(50), v float);
insert into test (k, v) select 'foo bar number '||generate_series(1,1000000), 1;
create index test_k_idx on test using hash (k);
analyze test;
explain analyze select v from test where k='foo bar number 634652';
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------
Index Scan using test_k_idx on test (cost=0.00..8.45 rows=1 width=8) (actual time=0.201..0.206 rows=1 loops=1)
Index Cond: ((k)::text = 'foo bar number 634652'::text)
Total runtime: 0.265 ms
(3 rows)