powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / 4млрд или оптимизация JOIN
20 сообщений из 20, страница 1 из 1
4млрд или оптимизация JOIN
    #38478929
bodpad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
4млрд или оптимизация JOIN
    #38478955
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажите план запроса. Есть подозрение, что у вас нет ни одного индекса.
...
Рейтинг: 0 / 0
4млрд или оптимизация JOIN
    #38479032
bodpad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
4млрд или оптимизация JOIN
    #38479045
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftПокажите план запроса. Есть подозрение, что у вас нет ни одного индекса.
таки нету.
...
Рейтинг: 0 / 0
4млрд или оптимизация JOIN
    #38479054
bodpad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
4млрд или оптимизация JOIN
    #38479061
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлять условия не надо, пусть в JOIN-ах и остаются.

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

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

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

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

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


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