|
|
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
Добрый день! Ситуация такая, есть один запрос, и иногда он выполняется ооочень медленно, я поймал этот момент и хочу показать вам разницу в EXPLAIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2015, 14:29:38 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
Вторая ситуация, когда запрос занимает около 3-х МИНУТ, вместо 40 МС как в первом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2015, 14:30:24 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
Я добавил STRAIGHT_JOIN и все заработало!!! :):):) Скажите, насколько я правильно поступил в этой ситуации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2015, 14:34:24 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
Так это одна база или разные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2015, 14:34:32 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
adrocketЯ добавил STRAIGHT_JOIN и все заработало!!! :):):) Скажите, насколько я правильно поступил в этой ситуации?Вполне возможно, что правильно. Я бы попробовал OPTIMIZE TABLE для всех таблиц в запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2015, 14:36:05 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
miksoft, Да, это одна и та же база. Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2015, 14:37:26 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
adrocket, оптимайз может помочь. А может помочь на какое-то время. А может один раз помочь, а после второго запуска на тех же данных не помочь :) Стрейт джойн же, напротив, на конкретных данных помогает однозначно, но с их изменением может начать вредить. В общем, смотрите сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2015, 19:17:40 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
tanglir, А OPTIMIZE на innodb делается? Что вы имеете ввиду когда говорите что на других данных возможно будет вредить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2015, 19:37:26 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
tanglir, > Table does not support optimize, doing recreate + analyze instead ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2015, 19:39:14 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
adrocket> Table does not support optimize, doing recreate + analyze insteadЭто нормально, так и должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2015, 19:45:51 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
adrocketЧто вы имеете ввиду когда говорите что на других данных возможно будет вредить?Может, у вас такие данные, что анализатор их ниасиливает: он, насколько я помню, берёт процентов 5-10 от всех данных и на их основе свою статистику строит - если данные как-то неравномерно распределены, то может в каких-то случаях неправильно построить план. Стрейт джойном вы однозначно указываете, в какой последовательности обрабатывать таблицы, но не факт, что с добавлением/изменением данных эта последовательность продолжит оставаться оптимальной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2015, 19:50:54 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
tanglir, Без STRAIGHT_JOIN запрос у мены выполняется ~ 200 секунд. Когда как с его использованием ~ 40 мс. Размеры таблиц сейчас: users ~ 1,5k objects ~ 50k object_images ~ 150k У меня, увы, это первый опыт работы с такими большими данными, таблицы увеличиваются где-то на 20% в неделю. Расскажите, что меня ждет? И как вообще смотрят на эту ситуацию опытные люди? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 12:55:45 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
adrocket, а зачем вообще группировка в этом запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 13:13:00 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
miksoft, У каждого объекта может быть много изображений. Изображения хранятся в отдельной таблице с внешним ключем object_id. У каждого изображения есть имя (для получения его содержимого из файловой системы). И мне нужны втянуть все объекты и все относящиеся к ним изображения за раз. Я добавляю еще один столбец, в котором содержатся имена файлов через разделитель ";". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 15:49:18 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
adrocket, Без группировки я получу дублирование objects в резулитирующем массиве. А так как я делаю в коде foreach по нему, думаю что лишняя логика в коде будет, с точки зрения производительности, хуче чем группировка в запросе. Правильно я думаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 15:51:29 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
adrocket, Логически правильно, а вот насчет производительности не уверен. Возможно, заменив группировку на сортировку, удалось бы добиться меньшего времени выполнения всей задачи. Но это нужно пробовать, и не факт что даст пользу. Если текущее быстродействие устраивает, то не заморачивайтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 16:30:10 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
miksoft, Текущее полностью устраивает. Единственно что, это опасения "А что будет когда будет over 999999 объектов?". Это опасение обусловлено тем что я с таким просто еще не сталкивался, все ведь будет ок? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 19:24:58 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
adrocketЕдинственно что, это опасения "А что будет когда будет over 999999 объектов?".Преждевременная оптимизация - зло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 19:40:35 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
miksoft, Все в свое время, понял. Спасибо за ответы! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 19:41:50 |
|
||
|
Один запрос, одна структура БД, и два совершенно разных результата.
|
|||
|---|---|---|---|
|
#18+
miksoftadrocketЕдинственно что, это опасения "А что будет когда будет over 999999 объектов?".Преждевременная оптимизация - зло.+1 Пока стрейт работает - пусть работает. Когдаесли перестанет работать, надо будет смотреть по ситуации. Которой пока что нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 21:04:08 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=142&tid=1833401]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 323ms |

| 0 / 0 |
