A relation read inside a loop issues a query per iteration. Fifty orders rendered with the customer name attached is fifty-one queries, and nothing on the page says…
A variable product with four sizes and three colours is not one row. Every combination is a product_variation post carrying its own meta, so a catalogue that reads…
The activity stream is not posts. It has its own table, its own class and its own template loop, so every habit built around WP_Query — pre_get_posts, fields…
A slow query log at the usual one-second threshold shows the report that takes four seconds and hides the nine hundred queries of eight milliseconds that the product…
A daily report scanning 1.2 million rows to return two hundred. Why neither obvious index helped, what the composite one costs, and the two answers I turned down.
Every request WordPress serves opens with one query that reads every option flagged autoload = yes and unserialises the lot into memory. That is a reasonable design for…