как бы то ни было от ... индексирование - это способ оптимизации.
Прежде всего вы можете идентифицировать медленные запросы с помощью этой записи: log-slow-query long_query_time = значение в my.cnf
Это дает вам представление о необходимости оптимизации.
Затем позвольте MySQL объяснить запрос.
наиболее значимым является возможных_ключей : item_name, categoryid и используемые ключи key : item_name и посмотрите, есть ли: using_filesort. Последний (using_filesort) говорит, что вы должны использовать индекс, чтобы сэкономить время ответа
Но !, поскольку в каждой таблице используется один ключ, также стоит подумать об агрегировании:
Комбинированный индекс:
- (categoryid, item_name) когда ваша WHERE часть равна
categoryid="iao" AND item_name="xyz"
- (item_name, categoryid) когда ваша WHERE часть равна
item_name="xyz" AND categoryid="iao"
---> порядок важен!
если ваша WHERE часть равна item_name="xyz" AND categoryid="iao"
, используйте два индекса:
1. index: item_name помогает экономить время
2. index: categoryid потерянное время
наибольшую выгоду от использования комбинированного индекса вы получите, когда ваша WHERE часть использует ORDER BY
например: WHERE часть равна item_name="xyz" AND categoryid="iao" ORDER BY date_added
. В этом случае объединенный индекс: (item_name, categoryid, date_added) экономит время.
И да, сделайте это правильно:
индексирование потребляет время за счет индексации (DELETE, UPDATE, REPLACE, INSERT
) и экономит время на каждом SELECT