Hey @simonwelsh  thanks for the review.

The order of columns in an index is only conditionally relevant for some database adapters. For example, MS SQL Server forces index columns to match the same order as those columns appear in the table. When the DB is being rebuilt, the order of the columns returned from the DB (Title, Filename, and Content, as per the order of those fields on the table) does not match the order that Silverstripe thinks they should be (Filename, Title, Content), and constantly tries to rebuild them.

I have tested this ORM rewrite extensively over each of the available DB adapters, including MS SQL Server, SQLite3, MySQL, and PostgreSQL, including PDO and native adaptors.

Fixing the order of this index to match the order of the fields on the table provides the most consistent behaviour across each of these.