Также я хочу знать, хочу ли я иметь
индекс по 2 столбцам, лучше ли
индексировать их отдельно или вместе?
Это зависит от ваших запросов. Если у вас есть индекс (colA, colB), база данных никогда не сможет использовать этот индекс, если вы не используете colA в условии WHERE своих запросов. Если у вас есть запросы WHERE colB = ?
, вам нужен индекс, начинающийся с этого столбца.
index (colA, colB);
WHERE colA = ?; -- can use the index
WHERE colA = ? AND colB = ?; -- can use the index
Это не удастся:
WHERE colB = ?;
Но ... если вы измените порядок столбцов в индексе:
index (colB, colA); -- different order
WHERE colb = ?; -- can use the index
WHERE colA = ? AND colB = ?; -- can use the index
А теперь этот не может использовать индекс:
WHERE colA = ?;
Проверьте ваши запросы, используйте EXPLAIN и создайте только те индексы, которые вам действительно нужны.