FORCE INDEX makes the immediate problem go away and freezes a decision the optimiser would otherwise revisit as the data changes. It is a fix with an expiry…
The reporting code had one caller and a six-hour test run. Finding the seam, dealing with the shared schema honestly, and routing traffic gradually rather than switching.
Passing 0 as the expiry reads like “expire immediately” and means the opposite: no expiry is stored, so the transient lives until something deletes it. A variable that…
Resetting the database between tests by truncating every table is correct and slow, and it re-runs the seed data on each one. Wrapping each test in a transaction…
The shared-folder problem that nearly killed this last year is gone. What changes in the compose file, what the new file sharing costs, and where Linux and Mac…
5.6 made many ALTER operations online, and the ones that are not — changing a column type, adding a full-text index — still copy the table while holding…
chunk() paginates with OFFSET, so if the loop body changes whether a row still matches the query, the offset for the next page has shifted and rows get…
MySQL used to allow selecting a column that is neither grouped nor aggregated, returning an arbitrary row’s value for it. 5.7 turns that off by default, and every…