The transcode table in TimedMediaHandler doesn't currently store the status in a straightforward way, which makes the table awkward to query in bulk at the scale of Wikimedia Commons.
Instead of implicitly storing the state of a transcode as the null/present state of various timestamp columns, add a column with suitable state constants and suitable indexes for pulling bulk info and most-recently-added N items to each state.
- add column: transcode_status INT (eg 0 - 'missing', 1 - 'queued', 2 - 'active', 3 - 'failed')
- add column: transcode_touched VARBINARY(14)
- add index: `transcode_status_touched (transcode_status,transcode_touched)
- update code to set transcode_state and transcode_touched on each update [switchable or carefully deployed]
- update special:transcode_statistics to use the new fields [switchable or carefully deployed]
- maintenance script to fill out the fields on existing rows after deployment
- prep for deployment of the db update