попробовал, не помогло
Проще всего - сделать синтаксическую ошибку в запросе. Тогда строка запроса будет выдана в сообщении об ошибке.
Другой путь - сделать вывод этой строки в методе query().
Синтактическая ошибка ничего не выводит (ошибка не меняется), пытался в классе DB поймать запрос, выводит это
string(73) "SELECT * FROM `articles` ORDER BY `id` DESC limit :limit offset :offset;"
Параметры вроде тоже верно приходят
Сам запрос в майдамин отрабатывает нормально
Проблема из-за возврата null, на этот раз из query(). Зачем вам вообще нужно это значение? Не используете исключения?
Как я понимаю, это ваш query(). У метода PDO другие параметры.
query это просто обращение к методу класса базы
От класса работы с базой или от модели в которой идет вызов в базу?
Вот мой запрос
Проанализировав таблицу t2 я понял что условие (t2.average > 0 OR t2.comments > 0) избыточно и можно сократить просто до t2.average > 0
но к сожалению это никак не ускорило запрос, он по прежнему выполняется более 2 сек.
тут уже можно форсировать индекс и вроде бы как вот оно,
но нет - запрос все так же выполняется более 2 сек. Форсирование никак не убыстряет запрос, все так и пляшет в районе 2,1 сек. Что с форсированием, что без.
Вы говорили, выбирается 200 полей, правда с JOIN
Но EXPLAIN говорит, что по каждому индексу найдено полтаблицы
Mysql решает, что быстрее всю таблицу считать, чем мудохаться с индексом
Покажите инфу по индексам второй таблицы
Я имел в виду что под условие попадет 230K примерно. Да, вы вероятно правы, мускуль решает что реально проще всю таблицу оббежать ибо индексы по двум полям выборки как раз по 30% таблицы примерно