• Добрый день!

    Есть сайт с большим кол-вом постов и доп. полей (wp_postmeta)
    В базе, в wp_postmeta уже более 1500000 строк
    Соответственно MYSQL зависает на этапе сортировки всех записей, пример процесса:
    Sorting result — SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (9946) ORDER BY meta_id ASC
    И такие процессы очень часть появляются, и соответственно сайт начинает притормаживать.
    Можно ли как-то запрос оптимизировать, чтобы не просматривать все 1500000 записей???

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Модератор Юрій

    (@yube)

    чтобы не просматривать все 1500000 записей???

    А почему Вы решили, что mysql в этом запросе просматривает все 1500000 записей?

    Автор yura555

    (@yura555)

    Выдал EXPLAIN

    Модератор Юрій

    (@yube)

    Что именно выдал? Сказал, что нет допустимых ключей?

    Автор yura555

    (@yura555)

    Модератор Юрій

    (@yube)

    Странно. В possible_keys и key по идее должен быть post_id. Проверьте в структуре таблицы какие индексы есть и включены ли они.

    • Ответ изменён 8 лет назад пользователем Юрій.
    Автор yura555

    (@yura555)

    По умолчанию в таблице wp_postmeta:

    meta_id post_id meta_key meta_value

    Модератор Юрій

    (@yube)

    Я про индексы спросил, а не про поля.

    Автор yura555

    (@yura555)

    Модератор Юрій

    (@yube)

    Подозрения оправдались — disabled.
    Включайте индексы.
    ALTER TABLE wp_postmeta ENABLE KEYS

    И остальные таблицы проверьте.

    Классно, теперь показывает 42!
    На скорости пока не заметно, но посмотрим, наверно должен сервер поработать…
    Спасибо

    Но вопрос, под эти индексы нужно ли дополнительно настраивать Mysql?
    Или еще что-то делать, я не сталкивался с таким еще…

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Как правильно оптимизировать запрос к большой БД» закрыта для новых ответов.