autoload in wp_options is what makes an old install slow

On every request WordPress fetches all options with autoload set to yes in one query, unserialises the lot and holds it as a single alloptions entry. That is a sensible trade at 200 KB. Plugins add rows and hardly ever remove them when they are deactivated, so on a three-year-old install the same query returns megabytes — on every page load, including the 404s.

SELECT option_name, ROUND(LENGTH(option_value) / 1024) AS kb
  FROM wp_options
 WHERE autoload = 'yes'
 ORDER BY LENGTH(option_value) DESC
 LIMIT 20;

SELECT COUNT(*) AS total, ROUND(SUM(LENGTH(option_value)) / 1024) AS kb
  FROM wp_options WHERE autoload = 'yes';

The rows at the top of that list are almost always transients that never expired and settings belonging to plugins that are no longer installed. Anything read only on an admin screen can have autoload flipped to no, after which it costs one query when it is genuinely needed instead of bytes on every request. add_option() takes the flag as its fourth argument and defaults it to yes, which is how the table got into this state in the first place.