- Yes. Key is the synonym for index.
- Database design and used queries. There is no sole answer.
- When these multiple columns got used in the query. There is no sole answer.
- Yes, engine doesn't affect indexing.
- Usually it does. Any live applicadion does fech it's data based not only on the primary key. There is no sole answer.
The indexing is quite complex job.
First, it should be done based on the real needs. If some of your query turns to run slow, it's time to add some indexes. If your query runs fast, no index needed.
Next, run your query with word EXPLAIN
in front of it, e.g. EXPLAIN SELECT * FROM table
and see what it says. Usually it helps to determine, where to place an idnex.
http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html - more explanations here