Comparing a row with the previous one — time between orders, change since the last reading — was a self join on a correlated subquery finding the preceding…
A common table expression reads like a named intermediate result, and in MySQL 8.0 it may be merged into the outer query or materialised into a temporary table…
EXPLAIN shows the plan the optimiser chose and its estimates, and the estimates are frequently wrong — a query planned for 40 rows that reads 400,000 looks fine…
Querying orders with WP_Query couples the code to orders being posts, which is the thing WooCommerce spent 3.0 making replaceable. It returns order objects rather than posts, so…
8.0 went GA in April and the correlated subquery can retire. The plans before and after, the recursive CTE that replaces a loop, and the upgrade nobody expects.
Earlier versions accepted DESC in an index definition and ignored it, which is worse than rejecting it because the query looked optimised and was doing a filesort. It…