livetv

Рейтинг
265
Регистрация
10.02.2015
Dram #:

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)

STRAIGHT_JOIN делать так:

EXPLAIN
SELECT
        *
FROM
        xyfq1_items AS t2
STRAIGHT_JOIN
        xyfq1_professions AS t1 ON t1.item_id = t2.id
WHERE
        (t2.average > 0 OR t2.comments > 0)

А что выводит

EXPLAIN
SELECT
        *
FROM
        xyfq1_items AS t2
WHERE
        (t2.average > 0 OR t2.comments > 0)

и

EXPLAIN
SELECT
        *
FROM
        xyfq1_items AS t2
WHERE
        t2.average > 0

и

EXPLAIN
SELECT
        *
FROM
        xyfq1_items AS t2
WHERE
        t2.comments > 0

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

Возможно в первой таблице лишние индексы

Можно попробовать поменять порядок JOIN и джойнить через STRAIGHT_JOIN

Возможно OR нужно заменить на 2 запроса, чтобы каждый запрос мог заюзать индекс второй таблицы

Ну фильтрация происходит по полям второй таблицы

С информации об индексах и EXPLAIN можно сделать вывод, что таблицы имеют одинаковое число записей, 1 к 1.

А также индексу по сути не чего фильтровать, базе нужно прочитать всю таблицу.

Можете условие с WHERE переместить в ON для JOIN.

Ждем час, пока ТС сам напишет ответ

Был опыт удаления порядка 40к старых изначально не приносивших трафика страниц.

Никаких изменений.

webinfo #:

Нет. Рут остаётся рутом, и никакой судоер не может им стать, в том числе не может поменять его пароль. Тем самым предотвращается полный захват системы. В этом и состоит смысл делегирования прав.

sudo su и мы root

Как вам такое?

Украина, Белоруссия, Казахстан


Всего: 2575