- Да. Ключ - это синоним индекса.
- Дизайн базы данных и используемые запросы. Единственного ответа не существует.
- Когда эти несколько столбцов используются в запросе. Единственного ответа не существует.
- Да, двигатель не влияет на индексацию.
- Обычно так и есть. Любое живое приложение делает свои данные, основанные не только на первичном ключе. Единственного ответа не существует.
Индексация довольно сложная работа.
Во-первых, это должно быть сделано исходя из реальных потребностей. Если некоторые из ваших запросов работают медленно, пришло время добавить несколько индексов. Если ваш запрос выполняется быстро, индекс не нужен.
Затем запустите ваш запрос со словом EXPLAIN
перед ним, например, EXPLAIN SELECT * FROM table
и посмотри, что там написано. Обычно это помогает определить, где разместить idnex.
http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html - больше объяснений здесь