Фильтрация по пользовательским полям Post Meta - Производительность


Мне бы не помешали некоторые советы о том, как структурировать мои данные для повышения производительности. У меня есть пользовательский тип записи с большим количеством пользовательских метаданных, хранящихся в таблице wp_postmeta в виде сериализованного массива под одним мета-ключом для каждой записи. Теперь мне нужно получить несколько сообщений из этого типа сообщений и отфильтровать их по сохраненным мною метаданным.

Прямо сейчас, единственный способ, который я могу придумать, чтобы сделать это, - это получить ВСЕ метаданные для ВСЕХ сообщений этого типа, а затем отменить их сериализацию в массивный PHP массив, а затем используйте циклы foreach, чтобы проверить их все по одному. Это кажется мне действительно плохим/медленным способом делать что-то.

На данный момент я думаю, что мне следует отказаться от всего своего плана и начать с нуля, используя свою собственную пользовательскую таблицу. Это просто так не по-wordpress, хотя, и это было бы БОЛЬШОЙ работой. Моя другая идея состоит в том, чтобы сделать то, что было предложено по этому другому вопросу (мета_запрос с мета-значениями в виде сериализованных массивов) и разделить все мета-значения на отдельные мета-ключи, а затем запросите их, как показано в этом вопросе. Проблема, которую я вижу, заключается в том, что этот запрос, похоже, тоже не будет особенно быстрым, и моя таблица wp_postmeta станет ОГРОМНОЙ.

Любые идеи будут высоко оценены .

Author: Community, 2011-12-12

1 answers

Если вы хотите иметь больше контроля над фильтрацией своих сообщений, то разделение мета-значений на отдельные ключи - лучший вариант для этого. Кроме того, вы могли бы сделать так, чтобы только те значения, которые потребуются при фильтрации, могли быть разделены, а остальные могли быть помещены в сериализованный массив.

 4
Author: Joshua Abenazer, 2011-12-12 08:13:40