Моя схема MySql выглядит следующим образом
create table TBL1 (id, person_id, ....otherData)
create table TBL2 (id, tbl1_id, month,year, ...otherData)
Я запрашиваю эту схему как
select * from TBL1 join TBL2 on (TBL2.tbl1_id=TBL1.id)
where TBL1.person_id = ?
and TBL2.month=?
and TBL2.year=?
В настоящее время проблема состоит в том, что в TBL1 существует около 18 КБ записей, связанных с каким-то person_idи есть также около 20 тыс. записей на TBL2, связанных с одинаковыми значениями месяца / года.
На данный момент у меня есть два индекса.index1 для TBL1 (person_id) и другие для index2 для TBL2 (месяц, год)
, когда база данных выполняет запрос, она использует index1 (игнорируя параметры месяца и года) или index2 (игнорируя параметр person_id).Итак, в обоих случаях он сканирует около 20 тыс. Записей и работает не так, как ожидалось.
Есть ли у меня какой-либо способ создать один индекс для обеих таблиц или сообщить mysql о слиянии de index при запросе?