Я мог бы посоветовать, как структурировать данные для производительности. У меня есть пользовательский тип сообщения с большим количеством пользовательских метаданных, хранящихся в таблице wp_postmeta
в виде сериализованного массива под одним мета-ключом для каждого сообщения. Теперь мне нужно получить некоторые сообщения из этого типа сообщений и отфильтровать их по метаданным, которые я сохранил.
Прямо сейчас, единственный способ, которым я могу это сделать, – получить ВСЕ метаданные для ВСЕХ сообщений этого типа, затем неэтериализовать их в массив массивов PHP, а затем использовать foreach
loop, чтобы проверить их все, один. Это поражает меня как очень плохой / медленный способ делать что-то.
На данный момент я думаю, что должен отказаться от всего моего плана и начать с нуля, используя свою собственную таблицу. Это просто так не WordPress, хотя, и это будет много работы. Моя другая идея – сделать то, что было предложено по этому другому вопросу ( meta_query с метазначениями как сериализованные массивы ) и разделить все метазначения на отдельные мета-ключи, а затем запросить их, как показано на этом вопросе. Проблема, которую я вижу там, заключается в том, что этот запрос не похож, что он будет особенно быстрым, и моя таблица wp_postmeta
станет wp_postmeta
.
Любые идеи были бы весьма признательны.
Если вы хотите больше контролировать фильтрацию своих сообщений, то разделение метазначений на отдельные ключи – лучший вариант для этого. Также, что вы можете сделать, только значения, которые потребуются при фильтрации, могут быть разделены, а остальные из них могут перейти в сериализованный массив.