1. В index.php плагина есть екшен
add_action( 'wp', 'rcl_add_data_rating_posts');
Функция, которую он вызывает, срабатывает в архиве и в категориях, создает 3 запроса в базу и ничего не возвращает. Незнаю зачем она, переменные которые она создает - не глобальные, а в переменную wp_query, которая там используется - ничего не пишется. Вообщем ее надо либо удалить, либо доделать, я не понял зачем она.
2. При активации плагин создает таблицы и добавляет к ним PRIMARY KEY id (id). Но столбца id нету, есть ID. Надо исправить на PRIMARY KEY id (ID)
3. Нужно добавить индексы в таблицы.
Таблица rating_totals
Запрос с рандомным ID объекта
SELECT rcl_rating_totals.rating_total FROM ***_rating_totals AS rcl_rating_totals WHERE rcl_rating_totals.object_id = '1335692' AND rcl_rating_totals.rating_type = 'post' ORDER BY rcl_rating_totals.ID DESC LIMIT 0,30
Выполняется 0.1с.
Если добавить в таблицу индекс для столбца object_id, то такой же запрос с рандомным ID объекта выполняется 0.0005с
Таблица rating_values
Так же популярный запрос
SELECT rcl_rating_values.rating_value FROM ***_rating_values AS rcl_rating_values WHERE rcl_rating_values.user_id = '1' AND rcl_rating_values.object_id = '136186' AND rcl_rating_values.rating_type = 'post' ORDER BY rcl_rating_values.ID DESC LIMIT 0,30
Выполняется 0.1с.
Если добавить индекс для двух столбцов user_id и object_id то запрос выполняется 0.0005с
Проблемы с такими запросами возникает только при первом открытии страницы, т.е. затем база уже кеширует ответ и проблемы нет, но если двигаться от одной записи к другой, то эти запросы накидывают по 0.2-0.3с к генерации. Если добавить индексы, то такой проблемы нет.
Может быть это только у меня конечно, но индексы в любом случае не помешают.
Preci сказал(а)
Незнаю зачем она
она затем, чтобы добавить в глобальный массив записей данные о рейтинге этих публикаций, делаем три запроса вместо 30 на 10 записей, тут если только эти три запроса объединить, реализацию предлагай, если будет лучше - сделаем.
Preci сказал(а)
Нужно добавить индексы в таблицы.
а разве индексы не добавляются?
ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, object_id BIGINT(20) UNSIGNED NOT NULL, object_author BIGINT(20) UNSIGNED NOT NULL, rating_total VARCHAR(10) NOT NULL, rating_type VARCHAR(20) NOT NULL, PRIMARY KEY id (id), KEY object_id (object_id), KEY object_author (object_author), KEY rating_type (rating_type), KEY rating_total (rating_total)
Андрей CS сказал(а)
она затем, чтобы добавить в глобальный массив записей данные о рейтинге этих публикаций, делаем три запроса вместо 30 на 10 записей, тут если только эти три запроса объединить, реализацию предлагай, если будет лучше - сделаем.
Ясно, ну значит только мне оно не надо т.к. не выводится ничего из того что функция делает
Андрей CS сказал(а)
не думаю, все вполне нормально индексируется
У меня в базе почему то не было у этих таблиц вообще индекса никакого. Все стирать что бы проверить, я, конечно же, не буду. Но если добавляется то ок, тогда можно закрыть тему