Indexes and query behavior is usually pretty tied to the way a particular database engine works - and I don't know SQLlite at all, so I can't really help you with specifics.
in reply to Re^4: Hash lookups, Database lookups, and Scalability
in thread Hash lookups, Database lookups, and Scalability
However, your table schema is exceedingly simple, so you really only have two choices:
create unique index left_ix on words(left)
(and their opposites).
create unique index left_ix on words(left, right)
The first form is more "correct" - you really only want the key in the index. The second form may give you slightly better performance, at the expense of allowing duplicate "left" words into the table as long as they point at a different "right" word, and slightly more work during inserts (index maintenance is a little more complicated).
Personally I'd use the first form (index on "left", and a separate index on "right").