Перемещение некоторых комментариев из обсуждения в ответ с переписыванием и переформатированием.
По сути, это сводится к тому, что если у вас нет крайнего крайнего случая, их на самом деле не нужно «собирать». Если вы никогда их не получите, тогда не имеет значения, есть они там или нет.
Смотрите, переходные процессы хранятся в таблице параметров по умолчанию. При базовой установке таблица параметров будет содержать около 100 записей. Каждый переход добавляет еще две записи, но даже если у вас их тысячи, они не влияют на скорость сайта, поскольку они не загружаются автоматически.
При запуске WordPress загружает опции в память, но загружает только те опции, у которых включен флаг автозагрузки. Переходные процессы не получают этого, и поэтому не загружаются в память. Только переходные процессы, которые фактически используются позже, будут нести расходы.
С точки зрения базы данных таблица параметров имеет индексы как для идентификатора опции, так и для имени опции. Переходные процессы всегда загружаются на основе имени (ключа), поэтому их поиск всегда выполняется простым выбором значения уникального ключа. Таким образом, поиск O (log (n)) и очень быстрый. С Big-O log (n) вам нужно будет пройти миллионы и миллионы строк, прежде чем он станет заметным. Честно говоря, накладные расходы на настройку и разбор запроса, а также фактическую передачу данных намного больше. Сам запрос выполняется практически в нулевое время по сравнению. Так что просто наличие дополнительных неиспользуемых строк ни на что не влияет, но использует дополнительное дисковое пространство.
Индексирование в базах данных - это одна из тех идей для глубокого чтения, которая не имеет смысла для людей, которые на самом деле не понимают, что происходит за кулисами. Базы данных предназначены для быстрого извлечения данных с нуля и могут справляться с подобными вещами без проблем. Это очень хорошее чтение: http://en.wikipedia.org/wiki/Index_(database )
Теперь очистка наиболее очевидным способом (вызывая SQL DELETE для них) фактически не удаляет их из базы данных. Он просто удаляет их из индекса и помечает строку как «удаленную». Опять же, это просто, как работают базы данных. Чтобы на самом деле очистить дисковое пространство, вы должны затем продолжить и выполнить OPTIMIZE TABLE впоследствии, и это не будет быстрой операцией. Это требует времени. Наверное, больше времени, чем это стоит. Возможно, этого недостаточно для экономии процессорного времени.
Если у вас есть случай, который вызывает постоянную вставку новых переходных процессов, которые не используются, вам нужно найти основную проблему вместо этого. Что вставляет эти переходные процессы? Они используют изменяющий или мутирующий ключ? Если так, то плагин или код, вызывающий это, должны быть исправлены, чтобы, по сути, не делать этого. Это будет более полезным, поскольку вполне вероятно, что код, который не создает их должным образом, также не извлекает их и, следовательно, выполняет больше работы, чем должен.
С другой стороны, может быть случай, когда для каждого сообщения создаются переходные процессы. Это действительно может быть вполне приемлемым. Я делаю это сам в SFC, чтобы хранить входящие комментарии из Facebook. С каждым постом связан потенциальный переходный процесс, что означает две дополнительные строки на пост. Если у вас есть 10 000 записей, у вас будет 20 000 строк в таблице параметров (в конце концов). Это не плохо или медленно, потому что опять же, между 100 строками и 20000 строками очень мало различий, насколько это действительно важно для баз данных. Это все проиндексировано. Это быстро, как черт. Суб-суб-миллисекунды.
Когда вы начнете попадать в миллионы рядов, я буду беспокоиться. Когда размер таблицы параметров возрастает до сотен мегабайт, я буду достаточно внимателен, чтобы взглянуть поближе. Но, вообще говоря, это не проблема, за исключением крайних случаев. Это, конечно, не проблема для чего-то меньшего, чем что-то вроде большого новостного сайта с сотнями тысяч постов. И для любого сайта, достаточно большого для того, чтобы он был проблемой, вы должны использовать некоторый внешний кэш объектов, и в этом случае переходные процессы автоматически сохраняются там, а не в базе данных.