SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.03.2009 22:51:49

aermamatov
Участник
Зарегистрирован: 02.03.2009
Сообщений: 2

left join с часто обновляемой таблицей

Стандартная ситуация, когда надо обновлять поле 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    ?

Может коряво описал проблему, голова уже варится...

Неактивен

 

#2 03.03.2009 12:26:24

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: left join с часто обновляемой таблицей

А чего Вы хотите добиться, вынося viewed в отдельную табличку? JOIN = отдельный seek
по диску => уменьшение производительности. Всегда и везде.

Неактивен

 

#3 03.03.2009 12:30:53

aermamatov
Участник
Зарегистрирован: 02.03.2009
Сообщений: 2

Re: left join с часто обновляемой таблицей

Спасибо. Я хотел избавится от lock tables и того, что запрjсы становятся в очередь, пока делается инкремент viewed. Получается прийдется делать дополнительный запрос на выборку просмотров в тех случаях, когда это поле необходимо.

Неактивен

 

#4 03.03.2009 14:09:33

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: left join с часто обновляемой таблицей

Просто используйте InnoDB?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson