За да дадете наистина отговор, би било полезно да видите дали вече имате съществуващи индекси, но...
Всичко това предполага, че съществува таблица 't' и трябва да добавите индекс и в момента имате само един индекс на своя първичен ключ или изобщо нямате индекси.
Покриващ индекс за заявката ще даде най-добра производителност за вашите нужди, но с всеки индекс жертвате известна скорост на вмъкване. Доколко тази жертва има значение зависи от профила на вашето приложение. Ако четете предимно от таблицата, няма да има голямо значение. Ако имате само няколко индекса, дори умереното натоварване на запис няма да има значение. Ограниченото място за съхранение на вашите маси също може да влезе в игра... Трябва да направите окончателната оценка на компромисът и дали е забележим. Хубавото е, че е доста постоянен хит. Обикновено добавянето на индекс не забавя вашите вмъквания експоненциално, а просто линейно.
Независимо от това, ето вашите опции за най-добра ефективност:
- Ако c3 е вашият първичен ключ за таблица t, не можете да направите нищо по-добро в заявката, за да я направите по-бърза с индекс.
-
Ако приемем, че c1 е вашият първичен ключ t:
ALTER TABLE t ADD INDEX covering_index (c3,c2);
-
Ако c1 не е вашият pk (и нито c2), използвайте това:
ALTER TABLE t ADD INDEX covering_index (c3,c2,c1);
-
Ако c2 е вашият PK, използвайте това:
ALTER TABLE t ADD INDEX covering_index (c3,c1);
-
Ако мястото на диска или скоростта на вмъкване е проблем, можете да изберете да направите индекс на точки. Ще пожертвате известна производителност, но ако поставите тежко, това може да е правилната опция:
ALTER TABLE t ADD INDEX a_point_index (c3);