Dram

Рейтинг
1114
Регистрация
28.06.2008
Все вопрос снят, сам затупил, целый день учил, мозги уже не вывозят. Нашел место где сам эти свойство протектед сделал ))
Наверное неправильно сформулировал - объект из базы уже приходит с протектед свойствами.
Не пойму от чего это зависит? 

От класса работы с базой или от модели в которой идет вызов в базу?

Вот мой запрос


Еще вопрос из той же области - мне нужно написать систему комментариев. Я ее написал и в модель статьи прокинул объект со всеми комментами для данной статьи. 
Все свойства каждого коммента опять протектед.
Как в этом случае правильнее вывести комменты во вьюшке?
В момент получения ответа из базы писать ответ в паблик свойство и уже его выводить во вьюшку?
В логе крона смотрите какие сообщение в момент запуска проблемного скрипта, там все ответы.

Проанализировав таблицу t2 я понял что условие (t2.average > 0 OR t2.comments > 0) избыточно и можно сократить просто до  t2.average > 0

но к сожалению это никак не ускорило запрос, он по прежнему выполняется более 2 сек.

тут уже можно форсировать индекс и вроде бы как вот оно,

но нет - запрос все так же выполняется более 2 сек. Форсирование никак не убыстряет запрос, все так и пляшет в районе 2,1 сек. Что с форсированием, что без.

livetv #:

Вы говорили, выбирается 200 полей, правда с JOIN

Но EXPLAIN говорит, что по каждому индексу найдено полтаблицы

Mysql решает, что быстрее всю таблицу считать, чем мудохаться с индексом

Покажите инфу по индексам второй таблицы

Я имел в виду что под условие попадет 230K примерно. Да, вы вероятно правы, мускуль решает что реально проще всю таблицу оббежать ибо индексы по двум полям выборки как раз по 30% таблицы примерно 

STRAIGHT_JOIN делать так:

А что выводит

и


и

форсирование индекс при селекте только по второй таблице работает 

если в Селекте звездочку заменить на id, то индекс начинает работать


livetv #:

Сбросьте весь запрос текстом

UPDATE  xyfq1_professions AS t1

inner JOIN  STRAIGHT_JOIN xyfq1_items AS t2 

SET t1.average = t2.average, t1.comments = t2.comments 

WHERE t1.item_id = t2.id and (t2.average > 0 OR t2.comments > 0)

Так Джойнится всего одна таблица, как тут можно порядок менять?

Вот эксплейн селекта

Вот убрал Where

Вот с форсирование индекса (может не так форсирую?)


Всего: 6924