izbushka

izbushka
Рейтинг
110
Регистрация
08.06.2007
siv1987:
Индекс хотябы на t2.t1_id есть?

Да, индексы, конечно, есть. Скорость устраивает, обновляется не часто.

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

select id,min(price),max(price) from t1 letf join t2 using(id) group by id limit 10 offset 100;

Работает тем дольше, чем больше offset, и на конец таблицы (offset 150000) выполняется 1.28 сек, когда как в начале моментально. Может, это можно побороть?

ID - первичный, уникальный ключ в t1 и простой ключ в t2

Итак..

Таблица в 150к.

Вариант с двумя селектами работает по 4.2сек на каждый селект (т.е. около 8 суммарно)

Вариант siv1987 с update с join 5.57 сек

Вариант ivan-lev с replace самый долгий - 11.74 сек, что не удивительно - он делает DELETE+INSERT. К тому же с ним возникает, в принципе, решаемая проблема в несоответсвии колонок (в реальной таблице есть дополнительные)

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

Однако кое-что новое из этого всего вынес. Спасибо

ivan-lev:
Судя по структуре, в таблице t1 нет поля item_id,

Да, да, я уже заметил. Исправил выше, но вы опередили

Правильный запрос:

update t1 set max_price=(select max(price) from t2 where id=t1.id)

siv1987:
update поддерживает join-ы

но не поддерживает group by.

Структура такая:

t1

-----------------

id | min | max

-----------------

1 2 4

2 2 5

3 1 6

t2

-----------------

id | price

-----------------

1 2

1 4

1 3

2 4

2 5

-----------------

id в таблицах - общее

При этом мой запрос

update t1 set max_price=(select max(price) from t2 where id=t1.id)

Делает ровно то, что надо, но только для поля max (и min отдельно) благодаря выделенному фрагменту (каждую строку по id, а не все строки, ivan-lev)

UPD: да, прошу прощения, там опечатка была (правильно красным)

C select'ом пробем нет. Проблема с update. Я могу достать 2 поля одним запросом, но как их скормить update'у?

Тоесть выкинув 90% ненужных букв из вашего поста имеем следующий не работающий запрос, я правильно понял?

"SELECT * FROM `table` WHERE LOWER(title) REGEXP 'some regexp' AND 'is_published' == 1"

Если да, то "==" поменять на "=" и убрать кавычки (или поставить нормальные - `) вокруг 'is_published'

rkkastory2:
Для всех остряков - слова "движёГ" в русском языке вообще нет

Видимо, вы еще недоучились немного..

Слова "движёГ" в русском языке действительно нет. Однако, слово "движок" вполне себе существует.

Советую обратить внимание на вводные слова в предложении и правописание местоимений. У вас с этим тоже проблема.

rkkastory2:
можно коверкать как пожелается.

Вам, конечно, этого никто не запретит.. Продолжайте в том же духе.

rkkastory2:
Ну да, немного поленился.)) И честно говоря подобной темы не нашел.)

Видимо, много поленился. Миллион тем находится по слову "магазин".

P.S. и да, загляните сюда

Radioactive:
Каким образом можно реализовать редирект?

JavaScript, например

Все что находится за символом # является якорем и работает исключительно в броузере (не передается на сервер). Поэтому способа отследить этот адрес на сервере не существует.

Всего: 904