Mysql композитная индексация с tenant_id
У нас есть многопользовательское приложение, в котором есть таблица с 129 полями, которые можно использовать в предложениях WHERE и ORDER BY. Я потратил 5 дней, пытаясь найти лучшую стратегию индексации для нас, я получил много знаний, но у меня все еще есть некоторые вопросы.
1) При создании индекса я должен всегда делать его составным индексом с tenant_id на первом месте? (Все запросы имеют tenant_id =? Там в предложении WHERE)
2) Поскольку все столбцы могут использоваться как в предложении WHERE, так и в предложении order by, должен ли я создать индекс для них всех? (Правильно знать, когда я делаю заказ по столбцу, у которого нет индекса, требуется 6 секунд для выполнения с арендатором, у которого около 1 500 000 строк)
3) сделать PK (tenant_id, ID), но неЭто влияет на присоединения к этой таблице?
Любой совет о том, как справиться с этим, будет принята с благодарностью.
====== Движок базы данных - InnoDB
=======
состав :
ID bigint(20) auto_increment primary
tenant_id int(11)
created_by int(11)
created_on Timestamp
updated_by int(11)
updated_on Timestamp
owner_id int(11)
first_name VARCHAR(60)
last_name VARCHAR(60)
.
.
.
(some 120 other columns that are all searchable)