MySQL not using index on large WHERE IN clause
I think there is an issue with large IN clauses and PARITIONing -- Beyond some not-so-large-number, the Optimizer say "punt, I'll just send this query to every partition".  (This may be part of what you are seeing.)

But more than that.  Picking partitions is costly, not cheap.  If you end up with all the partitions, the query will be slower than if you did not have partitioning.  (I recommend removing partitioning.  I have found no use case where BY LIST helps performance.)

Most importantly...  "Tuples" are not optimized.  That is, the Optimizer does a terrible job with WHERE (a,b) IN ((1,2), (3,4)), regardless of the indexes.  Don't use it if you want performance.  (Or you could plead for the optimization feature at bugs.mysql.com).)  (This is the real answer to the question.)

So, what to do?  One approach is to create a temp table with all those tuples.  Then JOIN from that tmp table to the real table and have a composite index (as you have with unique_index) to make the lookups fast.

Some other notes.


The number in INT(55) means nothing.  INT is always 4 bytes, with a range up to a few billion.  world int(3) should probably be TINYINT UNSIGNED (0..255) or SMALLINT UNSIGNED (0..65535).
"Prefix" indexing is rarely beneficial:  KEY player_index (player(8)); remove the (8).
KEY date_index (date) is redundant since there is another index (unique_index) starting with the same column.
Recommend moving to InnoDB before MyISAM is deprecated.