Q:

Вопрос про индексы в MySQL

Например есть MySQL запрос в файле get.php:
SELECT `id`, `uid` FROM `tasks` WHERE `uid` = 2 AND `read` = 0;

и есть запрос в файле test.php:
SELECT `id`, `uid` FROM `tasks` WHERE `uid` = 2;

Какой индекс ставить в таком случае? Составной на uid и read? Или по отдельности на uid и read?

A:

Нет.
Индексы ставить вообще необязательно, а делается это для увеличения производительности.
Индекс строит дерево поиска, после чего быстро быстро работают SELECT вроде вашего (в идеальном случае за O(log(n)), где n - количество записей)
Однако INSERT работают дольше, т.к. приходится пересчитывать индекс.
Индекс нужен такой как условие, если условие по двум полям то и индекс по двум, если есть по каждому отдельно, то по двум не нужен.

