Задать вопрос
ddimonn8080
@ddimonn8080

Как оптимизировать запрос к базе данных?

Здравствуйте, есть сайт на Wordpress, в базу данных добавил свою таблицу. Таблица весит около 80 MB.
В поле поиска на главной посетитель вводит код и по коду делается запрос к базе данных через
function get_my_product( $code ) {
    global $wpdb;
    $table_name = $wpdb->get_blog_prefix() . 'dbcsv';

    $product = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$table_name} WHERE `КОД_ТОВАРА_УКТЗЕД` = %d;", $code ) );
    return $product;
}

В результате нужно вывести значение всех строк базы в которых значение столбца `КОД_ТОВАРА_УКТЗЕД`
равняется введённому.
При запросе происходит ошибка, вернее получаю массив при выведении которого через var_dump() виснет браузер.

Я в этом новичёк. Подскажите как оптимизировать запрос чтобы нормально вывести нужную информацию?

Спасибо.
  • Вопрос задан
  • 412 просмотров
Подписаться 1 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 3
Выполнить sql запрос с EXPLAIN, наверняка нужно добавить индекс для `КОД_ТОВАРА_УКТЗЕД`.
Странное наименование столбца)))
Раз виснет браузер, значит выборка оказалась слишком большой, поэтому как писали выше, нужно выводить постранично
Ответ написан
@edb
SQL
посмотрите, что выдает ваш запрос. Сколько записей и что именно в них. Используйте для этого специальные клиенты. Если есть индекс по `КОД_ТОВАРА_УКТЗЕД`, то запрос уже оптимирован, можно еще ограничить выборку только необходимыми полями.
Про постраничный var_dump забудьте.
Ответ написан
Комментировать
maxxannik
@maxxannik
Сайты на WordPress + Интернет магазины WooCommerce
Попробуйте в SQL запрос добавить LIMIT 100 или 1000. Чтобы ограничить результат на 100 или 1000 записей.
Это защищает от ошибок и позволяет избежать подвисания браузера в процессе отладки.
В любом случае если запрос возвращает более 100 записей - то вероятно это фиговый механизм и можно придумать что-то лучше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы