вопрос
Здравствуйте.
Есть впс 2x2GHz, 2Gb RAM, SSD
При пересчете статистики в админке запрос к бд выполняется 106 секунд
в базе
Общее количество новостей: 15000 (rows - dle_post)
Зарегистрировано пользователей: 750 (rows - dle_users)
Пробовал посмотреть через explain выдает ошибку
Куда смотреть дальше?
Есть впс 2x2GHz, 2Gb RAM, SSD
При пересчете статистики в админке запрос к бд выполняется 106 секунд
# Time: 160831 23:03:50
# User@Host: user @ localhost []
# Query_time: 106.724022 Lock_time: 0.000149 Rows_sent: 0 Rows_examined: 166513674
use userdb;
SET timestamp=1472673830;
UPDATE dle_users, dle_post SET dle_users.news_num = (SELECT COUNT(*) FROM dle_post WHERE dle_post.autor = dle_users.name ) WHERE dle_users.name = dle_post.autor;
в базе
Общее количество новостей: 15000 (rows - dle_post)
Зарегистрировано пользователей: 750 (rows - dle_users)
Пробовал посмотреть через explain выдает ошибку
mysql> EXPLAIN UPDATE dle_users, dle_post SET dle_users.news_num = (SELECT COUNT(*) FROM dle_post WHERE dle_post.autor = dle_users.name ) WHERE dle_users.name = dle_post.autor \G;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE dle_users, dle_post SET dle_users.news_num = (SELECT COUNT(*) FROM dle_po' at line 1
ERROR:
No query specified
Куда смотреть дальше?
UPDATE
dle_users u1,
dle_post p1
SET
news_num = ( SELECT
( CASE
WHEN COUNT( p2.id ) = 0 THEN 0
WHEN COUNT( p2.id ) != 0 THEN COUNT( p2.id )
END ) AS count_post
FROM
dle_post p2
WHERE
p2.autor = p1.autor
GROUP BY
p2.autor )