Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / 4млрд или оптимизация JOIN / 20 сообщений из 20, страница 1 из 1
26.11.2013, 19:36:07
    #38478929
bodpad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
$psql1 = "SELECT *
          FROM node
          LEFT OUTER JOIN field_data_title    ON node.nid = field_data_title.nid
          LEFT OUTER JOIN field_data_category ON node.nid = field_data_category.nid
          LEFT OUTER JOIN field_data_body     ON node.nid = field_data_body.nid
          LEFT OUTER JOIN field_data_video    ON node.nid = field_data_video.nid
          WHERE node.type='1' 
          ORDER BY node.nid DESC";



Здравствуйте.
Данный запрос выбирает из таблицы новости только категории =1(node.type=1)

По факту из таблицы node выбривается только айдишник новости а уже потом как трансформер этот айдишник прицепляет к себе из таблиц title, category, body, video соответствующий контент и в итоге получаем на выходе готовую новость с заголовком, категорией, видео, и текстом

Тут не указано сколько новостей выбрать из таблицы, но т.к. их пока около 50 это дополнительное условие LIMIT я опустил

Получваю ошибку в пхпмай админ
The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay

Узнаю из max_join_size что моя выборка каким-то чудесным образом при расчете затронула больше 4млрд строк. Перейдя по ссылке можно увидеть критическую цифру после которой вылетает данная ошибка.

Таблица имеющая всего 50 новостей и 4млрд WTF?

Где при составлении запроса я допустил ошибку
...
Рейтинг: 0 / 0
26.11.2013, 19:56:20
    #38478955
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
Покажите план запроса. Есть подозрение, что у вас нет ни одного индекса.
...
Рейтинг: 0 / 0
26.11.2013, 21:23:47
    #38479032
bodpad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
...
Рейтинг: 0 / 0
26.11.2013, 21:36:03
    #38479045
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
miksoftПокажите план запроса. Есть подозрение, что у вас нет ни одного индекса.
таки нету.
...
Рейтинг: 0 / 0
26.11.2013, 21:43:35
    #38479054
bodpad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
Milsoft, Вы сказали про индексы и я полез в яндекс. Недолго читая увидел: "...приведите в порядок свой WHERE".

Привел его "в порядок" добавив к WHERE еще
Код: sql
1.
node.nid = field_data_title.nid AND node.nid = field_data_category.nid AND node.nid = field_data_body.nid AND node.nid = field_data_video.nid



Запрос выполнился.
Теперь план запроса выглядит так
Правильно???
...
Рейтинг: 0 / 0
26.11.2013, 21:56:31
    #38479061
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
Добавлять условия не надо, пусть в JOIN-ах и остаются.

Для начала, создайте индексы у всех таблиц field_data_* по полю nid.
...
Рейтинг: 0 / 0
26.11.2013, 21:58:51
    #38479065
bodpad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
Нет неправильно. Выбирается теперь только одна новость
...
Рейтинг: 0 / 0
26.11.2013, 22:01:24
    #38479068
bodpad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
авторНет неправильно. Выбирается теперь только одна новость
Это я написал про попытку добавить условие к WHERE
...
Рейтинг: 0 / 0
26.11.2013, 22:23:13
    #38479086
bodpad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
Индексы добавил как Вы и сказали
Выборка работает
Правильно?
...
Рейтинг: 0 / 0
26.11.2013, 22:39:41
    #38479095
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
bodpad,

Теперь значительно лучше.
Если есть желание еще ускорить, то можно попробовать создать индекс (type,nid) на таблице node.
...
Рейтинг: 0 / 0
26.11.2013, 22:53:02
    #38479104
bodpad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
Мне индексы добавить к обоим полям?
...
Рейтинг: 0 / 0
26.11.2013, 22:56:23
    #38479108
bodpad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
И еще один важный вопрос который очень-очень мне интересен.
Как при моей не оптимизированной выборке mysql формируя ответ затронул больше 4млрд строк?
Даже перемножив все строки я не понимаю откуда такая цифра. Как она получается?
...
Рейтинг: 0 / 0
26.11.2013, 22:57:45
    #38479110
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
bodpadМне индексы добавить к обоим полям?Нет, один индекс из двух полей и именно в том порядке, который я указал.
...
Рейтинг: 0 / 0
26.11.2013, 22:59:55
    #38479112
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
bodpadИ еще один важный вопрос который очень-очень мне интересен.
Как при моей не оптимизированной выборке mysql формируя ответ затронул больше 4млрд строк?
Даже перемножив все строки я не понимаю откуда такая цифра. Как она получается?Это была приблизительная оценка на основе данных статистики. Видимо, статистика по таблицам сильно не соответствовала реальным данным. Обновить статистику по таблице можно командой ANALYZE TABLE mytable. В результате должно быть "ОК", это так и надо.
...
Рейтинг: 0 / 0
26.11.2013, 23:16:16
    #38479120
bodpad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
Сделал
...
Рейтинг: 0 / 0
26.11.2013, 23:21:12
    #38479122
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
bodpadСделалА новый план показать?
...
Рейтинг: 0 / 0
26.11.2013, 23:24:07
    #38479125
bodpad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
...
Рейтинг: 0 / 0
26.11.2013, 23:34:31
    #38479135
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
А что там в колонке Extra обрезалось?

Теперь поживите пока так, если будут проблемы с производительностью - приходите еще. Есть еще мысли по ускорению, но на полусотне записей они практического смысла не имеют.
...
Рейтинг: 0 / 0
26.11.2013, 23:48:51
    #38479140
bodpad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
В колонке Extra ничего не обрезалось. Заскринил все. Подумал в верстке проблема и часть текста не отобразилась, посмотрел через firebug, там только Using where :)

Вы сказали: "Есть еще мысли по ускорению". Не прошу описывать методы, Вы и так для меня очень много сделали.
Просто скажите, что почитать и в каком направлении копать, а я потихоньку на будущее начну разбирать тему.

Забыл сказать самое главное. Дай вам Бог здоровья!
...
Рейтинг: 0 / 0
27.11.2013, 09:54:06
    #38479344
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4млрд или оптимизация JOIN
bodpadскажите, что почитать и в каком направлении копатьЕсли объема и английского языка не боитесь, то в документации есть целая глава Optimization . (Хотя объем там не такой уж и большой, а английский совсем простой).
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / 4млрд или оптимизация JOIN / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]