InnoDB needs specific memory buffer settings tuned to available RAM and the database load. How much RAM is available to MySQL? Let's see the result of ...
select engine,data,indexes,total
from (
select
ifnull(engine,'TOTALS') as engine,
concat(data,' GB') as data,
concat(indexes,' GB') as indexes,
concat(tot,' GB') as total,
if(engine is null,-1,tot) as ord
from (
select
engine,
round( sum(data_length)/1024/1024/1024, 2 ) as data,
round( sum(index_length)/1024/1024/1024, 2 ) as indexes,
round( sum(data_length+index_length)/1024/1024/1024, 2 ) as tot
from information_schema.tables
where engine is not null
and engine not in('information_schema','performance_schema')
group by engine with rollup
) sums
) list
order by list.ord desc;
And queries often need covering indexes. Such needs must be analysed per-query.
Therefore you need a non-production testbed that reproduces runtime conditions, allowing you to regression0-test such changes.