String index for a list of values using IN($1,$2): will a btree index work? We have a query that needs to compare a value to a list of values in a where clause. The strings are known and discrete. Does IN use the = operator to compare values? Would a b-tree index work for this use case? Example query:
 create table fruit (
   name character varying NOT null
 )

 select * from fruit where name in ('Banana', 'Apple');

Let's assume at the moment we do not want to normalize the data (even though I agree that makes the most sense).
An IN statement can be considered a chained OR, e.g. WHERE name IN ('Banana','Apple') is equivalent to WHERE (name = 'Banana' OR name = 'Apple').
The data is normalized once you define Name as your primary key as that would uniquely identify a fruit for the purposes of this example.  So if that was your primary key, there would be a B-tree present and the engine would (generally) do two seeks for your query: one for 'Banana' and one for 'Apple'.
If there was a secondary index on Name, the engine would (again, generally) do two seeks on that index and two seeks against the table.