PARTITIONing, without a clear picture of why, is usually a mistake. There are very few cases where such is beneficial to performance. Please describe your
PARTITION BY... clause and why you think it will help.
I agree that InnoDB is the way to go today.
Vertical partitioning is sometimes useful. Again, need more details to give a straight answer. Let's see
SHOW CREATE TABLE. If the 38 columns are full of
TEXT and big
VARCHARs, then vertical partitioning is probably a good idea for MyISAM, but less useful for InnoDB, since the latter engine may put such columns in another place anyway. If the 4 columns are wider than the 38, then this argument does not hold much weight.
You are looking at 40M rows per year? Will you be deleting "old" records? If so horizontal partitioning is an excellent use case. Set up weekly or monthly or yearly partitions (but strive for 5-50 partitions) and use
DROP PARTITION and
REORGANIZE PARTITION. Details in my blog.