На эту тему написано несколько очень толстых книг!
Вот несколько практических примеров: -
Не надо индексировать (кроме PK) любую таблицу с <1000 строками. </p>
В противном случае индексируйте все свои ФК.
Изучите свой SQL и найдите предложения where, которые больше всего уменьшат ваши результирующие наборы и проиндексируют этот столбец.
например. Дано:
SELECT OWNER FROM CARS WHERE COLOUR = 'RED' AND MANUFACTURER = "BMW" AND ECAP = "2.0";
У вас может быть 5000 красных машин из 20 000, так что индексация не сильно поможет.
Однако у вас может быть только 100 BMW, поэтому индексирование MANUFACURER немедленно сократит ваш набор результатов до 100, и вы можете устранить синие и белые автомобили, просто просматривая сто строк.
Как правило, базы данных выбирают один или два из доступных индексов на основе количества элементов, поэтому стоит рассчитывать на второе предположение и определять только те индексы, которые могут быть использованы.