Фильтрация по пользовательским полям Post Meta - Производительность
Мне бы не помешали некоторые советы о том, как структурировать мои данные для повышения производительности. У меня есть пользовательский тип записи с большим количеством пользовательских метаданных, хранящихся в таблице wp_postmeta
в виде сериализованного массива под одним мета-ключом для каждой записи. Теперь мне нужно получить несколько сообщений из этого типа сообщений и отфильтровать их по сохраненным мною метаданным.
Прямо сейчас, единственный способ, который я могу придумать, чтобы сделать это, - это получить ВСЕ метаданные для ВСЕХ сообщений этого типа, а затем отменить их сериализацию в массивный PHP массив, а затем используйте циклы foreach
, чтобы проверить их все по одному. Это кажется мне действительно плохим/медленным способом делать что-то.
На данный момент я думаю, что мне следует отказаться от всего своего плана и начать с нуля, используя свою собственную пользовательскую таблицу. Это просто так не по-wordpress, хотя, и это было бы БОЛЬШОЙ работой. Моя другая идея состоит в том, чтобы сделать то, что было предложено по этому другому вопросу (мета_запрос с мета-значениями в виде сериализованных массивов) и разделить все мета-значения на отдельные мета-ключи, а затем запросите их, как показано в этом вопросе. Проблема, которую я вижу, заключается в том, что этот запрос, похоже, тоже не будет особенно быстрым, и моя таблица wp_postmeta
станет ОГРОМНОЙ.
Любые идеи будут высоко оценены .
1 answers
Если вы хотите иметь больше контроля над фильтрацией своих сообщений, то разделение мета-значений на отдельные ключи - лучший вариант для этого. Кроме того, вы могли бы сделать так, чтобы только те значения, которые потребуются при фильтрации, могли быть разделены, а остальные могли быть помещены в сериализованный массив.