Adding a foreign key creates an index which generally works fine for a while - but at some point (it looks to be when the table gets above 100 MB) we start getting rubbish when using it as a reference in an INNER JOIN to the source table.

By "rubbish" I mean that queries asking for text from the joined table bring back two characters, typically something like "VÄ" rather than, say, "message".

The two characters returned for the same query always change - so it looks like the query is pulling random characters from memory.

If we remove the index from the table then the problem goes away - but returns if the index is once again added.