Indexación Mysql compuesta con tenant_id

Tenemos una aplicación multitenant que tiene una tabla con 129 campos que se pueden usar en las cláusulas WHERE y ORDER BY. Pasé 5 días intentando descubrir la mejor estrategia de indexación para nosotros, adquirí muchos conocimientos pero todavía tengo algunas preguntas.

1) Al crear un índice, siempre lo convierto en un índice compuesto con tenant_id en primer lugar (todas las consultas tienen tenant_id =? En la cláusula WHERE)

2) Dado que todas las columnas se pueden utilizar tanto en la cláusula WHERE como en la cláusula orden por, ¿debería crear un índice en todas ellas? (derecho a saber cuando ordeno por una columna que no tiene índice, se tarda 6s en ejecutarse con un inquilino que tiene aproximadamente 1,500,000 filas)

3) haz el PK (tenant_id, ID), pero ¿esto no afectaría las uniones a esa tabla?

Cualquier consejo sobre cómo manejar esto sería muy apreciado.

====== El motor de base de datos es InnoDB

=======

estructura :

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)

Respuestas a la pregunta(1)

Su respuesta a la pregunta