Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Один запрос, одна структура БД, и два совершенно разных результата. / 20 сообщений из 20, страница 1 из 1
21.03.2015, 14:29:38
    #38911941
adrocket
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
Добрый день!

Ситуация такая, есть один запрос, и иногда он выполняется ооочень медленно, я поймал этот момент и хочу показать вам разницу в EXPLAIN.
...
Рейтинг: 0 / 0
21.03.2015, 14:30:24
    #38911942
adrocket
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
Вторая ситуация, когда запрос занимает около 3-х МИНУТ, вместо 40 МС как в первом случае.
...
Рейтинг: 0 / 0
21.03.2015, 14:34:24
    #38911944
adrocket
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
Я добавил STRAIGHT_JOIN и все заработало!!! :):):)

Скажите, насколько я правильно поступил в этой ситуации?
...
Рейтинг: 0 / 0
21.03.2015, 14:34:32
    #38911945
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
Так это одна база или разные?
...
Рейтинг: 0 / 0
21.03.2015, 14:36:05
    #38911946
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
adrocketЯ добавил STRAIGHT_JOIN и все заработало!!! :):):)

Скажите, насколько я правильно поступил в этой ситуации?Вполне возможно, что правильно.

Я бы попробовал OPTIMIZE TABLE для всех таблиц в запросе.
...
Рейтинг: 0 / 0
21.03.2015, 14:37:26
    #38911947
adrocket
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
miksoft,

Да, это одна и та же база. Спасибо :)
...
Рейтинг: 0 / 0
21.03.2015, 19:17:40
    #38912058
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
adrocket, оптимайз может помочь. А может помочь на какое-то время. А может один раз помочь, а после второго запуска на тех же данных не помочь :) Стрейт джойн же, напротив, на конкретных данных помогает однозначно, но с их изменением может начать вредить. В общем, смотрите сами.
...
Рейтинг: 0 / 0
21.03.2015, 19:37:26
    #38912071
adrocket
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
tanglir,

А OPTIMIZE на innodb делается?

Что вы имеете ввиду когда говорите что на других данных возможно будет вредить?
...
Рейтинг: 0 / 0
21.03.2015, 19:39:14
    #38912072
adrocket
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
tanglir,

> Table does not support optimize, doing recreate + analyze instead
...
Рейтинг: 0 / 0
21.03.2015, 19:45:51
    #38912077
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
adrocket> Table does not support optimize, doing recreate + analyze insteadЭто нормально, так и должно быть.
...
Рейтинг: 0 / 0
21.03.2015, 19:50:54
    #38912082
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
adrocketЧто вы имеете ввиду когда говорите что на других данных возможно будет вредить?Может, у вас такие данные, что анализатор их ниасиливает: он, насколько я помню, берёт процентов 5-10 от всех данных и на их основе свою статистику строит - если данные как-то неравномерно распределены, то может в каких-то случаях неправильно построить план. Стрейт джойном вы однозначно указываете, в какой последовательности обрабатывать таблицы, но не факт, что с добавлением/изменением данных эта последовательность продолжит оставаться оптимальной.
...
Рейтинг: 0 / 0
22.03.2015, 12:55:45
    #38912321
adrocket
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
tanglir,

Без STRAIGHT_JOIN запрос у мены выполняется ~ 200 секунд. Когда как с его использованием ~ 40 мс.

Размеры таблиц сейчас:

users ~ 1,5k
objects ~ 50k
object_images ~ 150k


У меня, увы, это первый опыт работы с такими большими данными, таблицы увеличиваются где-то на 20% в неделю.

Расскажите, что меня ждет? И как вообще смотрят на эту ситуацию опытные люди? :)
...
Рейтинг: 0 / 0
22.03.2015, 13:13:00
    #38912334
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
adrocket,

а зачем вообще группировка в этом запросе?
...
Рейтинг: 0 / 0
22.03.2015, 15:49:18
    #38912455
adrocket
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
miksoft,

У каждого объекта может быть много изображений. Изображения хранятся в отдельной таблице с внешним ключем object_id.

У каждого изображения есть имя (для получения его содержимого из файловой системы).

И мне нужны втянуть все объекты и все относящиеся к ним изображения за раз. Я добавляю еще один столбец, в котором содержатся имена файлов через разделитель ";".
...
Рейтинг: 0 / 0
22.03.2015, 15:51:29
    #38912456
adrocket
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
adrocket,

Без группировки я получу дублирование objects в резулитирующем массиве. А так как я делаю в коде foreach по нему, думаю что лишняя логика в коде будет, с точки зрения производительности, хуче чем группировка в запросе.

Правильно я думаю?
...
Рейтинг: 0 / 0
22.03.2015, 16:30:10
    #38912482
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
adrocket,

Логически правильно, а вот насчет производительности не уверен. Возможно, заменив группировку на сортировку, удалось бы добиться меньшего времени выполнения всей задачи. Но это нужно пробовать, и не факт что даст пользу.
Если текущее быстродействие устраивает, то не заморачивайтесь.
...
Рейтинг: 0 / 0
22.03.2015, 19:24:58
    #38912546
adrocket
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
miksoft,

Текущее полностью устраивает.

Единственно что, это опасения "А что будет когда будет over 999999 объектов?".

Это опасение обусловлено тем что я с таким просто еще не сталкивался, все ведь будет ок? :)
...
Рейтинг: 0 / 0
22.03.2015, 19:40:35
    #38912556
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
adrocketЕдинственно что, это опасения "А что будет когда будет over 999999 объектов?".Преждевременная оптимизация - зло.
...
Рейтинг: 0 / 0
22.03.2015, 19:41:50
    #38912559
adrocket
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
miksoft,

Все в свое время, понял. Спасибо за ответы! :)
...
Рейтинг: 0 / 0
22.03.2015, 21:04:08
    #38912595
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один запрос, одна структура БД, и два совершенно разных результата.
miksoftadrocketЕдинственно что, это опасения "А что будет когда будет over 999999 объектов?".Преждевременная оптимизация - зло.+1
Пока стрейт работает - пусть работает. Когдаесли перестанет работать, надо будет смотреть по ситуации. Которой пока что нет.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Один запрос, одна структура БД, и два совершенно разных результата. / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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