Задавайте вопросы, мы ответим
Вы не зашли.
Стандартная ситуация, когда надо обновлять поле viewed, я вынес эту статистику в отдельную таблицу, но мучает вопрос улучшит ли это производительность, если надо всегда подтягивать это значение?
Вообщем говоря даст ли прирост такой запрос?
SELECT
news.*,
newsLang.id as id, newsLang.title, newsLang.text, newsLang.langId, news.id as newsId,
newsViewed.viewed as viewed
FROM news
LEFT JOIN newsLang ON news.id = newsLang.newsId
LEFT JOIN newsViewed ON news.id = newsViewed.newsId
WHERE news.id = :newsId
И для newsViewed для поля newsId лучше index и делать update, а если пустой результат, то insert или unique и делать INSERT INTO newsViewed SET viewed = 1, newsId= :newsId ON DUPLICATE KEY UPDATE viewed = viewed + 1 ?
Может коряво описал проблему, голова уже варится...
Неактивен
А чего Вы хотите добиться, вынося viewed в отдельную табличку? JOIN = отдельный seek
по диску => уменьшение производительности. Всегда и везде.
Неактивен
Спасибо. Я хотел избавится от lock tables и того, что запрjсы становятся в очередь, пока делается инкремент viewed. Получается прийдется делать дополнительный запрос на выборку просмотров в тех случаях, когда это поле необходимо.
Неактивен
Просто используйте InnoDB?
Неактивен