MySQL update min(), max() из другой таблицы

1 23
siv1987
На сайте с 02.04.2009
Offline
427
#21
izbushka:
Может, это можно побороть?

А зачем там джоин, когда можно обойтись одной таблицы?

SELECT t1_id, MIN(price), MAX(price) FROM t2 GROUP BY t1_id LIMIT 0, 10

либо

SELECT t1_id, MIN(price) min, MAX(price) max FROM t2 INNER JOIN (SELECT id FROM t1 LIMIT 0, 10) z ON z.id=t2.t1_id GROUP BY t2.t1_id

но на сколько это быстрее будет первого запроса не знаю

izbushka
На сайте с 08.06.2007
Offline
110
#22
siv1987:
А зачем там джоин, когда можно обойтись одной таблицы?

join нужен. Есть доп. поля в t1 по которым идет выборка.

Второй запрос проверю

siv1987
На сайте с 02.04.2009
Offline
427
#23
izbushka:
Есть доп. поля в t1 по которым идет выборка.

Ну тогда о чем еще можно говорить если там есть дополнительные условия. Может быть сами по себе эти запросы вовсе выполняются быстро, а дело полях по которым идет выборка. Судя по всему на них индексов у вас нет.

izbushka
На сайте с 08.06.2007
Offline
110
#24
siv1987:
Судя по всему на них индексов у вас нет.

Интересно, откуда такие выводы? :)

Anyway, как я показал выше, скорость запроса только по обсуждаемым здесь полям зависит от offset. Никаких других условий в тесте не используется.

siv1987
На сайте с 02.04.2009
Offline
427
#25

Для лимита используйте отдельный подзапрос для выборки только айдишек

doctorpc
На сайте с 12.07.2009
Offline
112
#26
siv1987:

Если там два селекта, проще уже будет написать так


UPDATE t1 SET min = (SELECT MIN(price) FROM t2 WHERE t1_id=t1.id), max=(SELECT MAX(price) FROM t2 WHERE t1_id=t1.id)

Как я и писал выше, селекта хоть и два, но второй ищет по таблице из одной строки.

Второй селект чисто для структуры, нет выбора из тысячи/миллиона записей из таблицы t2

izbushka:

Вариант doctorpc не работает, так как во втором вложении ему неоткуда знать о первой таблице: Unknown column t1.id in 'where clause', поэтому его протестировать не удалось.

Вы правы, я запрос тестировал, но тестировал без последнего where. Прошу прощения.

IL
На сайте с 20.04.2007
Offline
435
#27

izbushka, есть возможность скинуть полноценные структуры таблиц? имена полей заменить на field2, field3

izbushka:
Есть доп. поля в t1 по которым идет выборка.

А это вообще ситуацию меняет. Индекс по доп полю тогда смысла не имеет. Составной нужен. Вроде не упоминался нигде.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий