powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Апдейт с селектом слишком медленно работает
16 сообщений из 16, страница 1 из 1
Апдейт с селектом слишком медленно работает
    #39851560
Rom1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Стоит задача за один запрос найти самый большой ID и модифицировать записи.

Код: plaintext
1.
2.
3.
4.
5.
6.
update radippoollog
set login = 'mylogin', autoauth = 1
where id = (
        select id from (
                select id from radippoollog where framedipaddress = '10.99.0.10' order by id desc limit 1
        ) as t1
)

Каждый из этих запросов в отдельности выполняется за тысячные доли секунды, а вместе 5-8 секунд. Все индексы есть.
Что может быть не так?
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851573
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rom1Что может быть не так?Перепишите на многотабличный запрос.

Версия сервера какая?
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851575
Rom1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4.6.6deb4

Explain дает следующее, но я не очень понимаю вывод (прикрепляю)

Переписал на два отдельных запроса: поиск наибольшего ID, апдейт записи - всё работает быстро.
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851576
Rom1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, вот версия MySQL: 10.1.23-MariaDB-9+deb9u1 - Debian 9.0
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851580
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясните логику тут происходящего - мне кажется, запрос сложнее, чем должен быть. Т.е. покажите исходную структуру, пример наполнения, объясните, что требуется, и покажите желаемый результат.
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851583
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ещё лучше - рассмотрите возможность обновления сервера. Хотя бы до версии 10.2.2. Без оконных функций жить тоскливо...
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851584
Rom1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Логика-то простая:
1. Найти максимальный ID
Код: plaintext
1.
2.
3.
4.
select id
from radippoollog
where framedipaddress = '$ip'
order by id desc
limit 1

2. Проапдейтить запись по этому ID
Код: plaintext
1.
2.
update radippoollog
set login = '$phone', autoauth = 1
where id = $id
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851591
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rom1за один запрос
Это плохая религия, откажитесь от неё. Или в MySQL до сих пор нет TIL стабильнее чем read committed?..
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851617
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У update есть свои order by и limit. Select не нужен.
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851634
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rom1Логика-то простаяТогда я в упор не понимаю, зачем огород городить с подзапросами вместо простого и очевидного

Код: sql
1.
2.
3.
4.
UPDATE radippoollog
SET login = '$phone', autoauth = 1
WHERE framedipaddress = '$ip'
ORDER BY id DESC LIMIT 1
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851637
Rom1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, miksoft

А вот про это я не знал. Выглядит костылем конечно, проверю как работает. Спасибо
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851640
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rom1Выглядит костылем конечноС чего бы? Это штатный синтаксис, смотрите в доке.
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851650
Rom1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Да, действительно, в Firebird такой синтаксис тоже появился (или был?)
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851663
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rom1miksoft,

Да, действительно, в Firebird такой синтаксис тоже появился (или был?)про Firebird не знаю, уже много лет с ним дела не имел.
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851733
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rom1Всем привет. Стоит задача за один запрос найти самый большой ID и модифицировать записи.

Код: plaintext
1.
2.
3.
4.
5.
6.
update radippoollog
set login = 'mylogin', autoauth = 1
where id = (
        select id from (
                select id from radippoollog where framedipaddress = '10.99.0.10' order by id desc limit 1
        ) as t1
)

Каждый из этих запросов в отдельности выполняется за тысячные доли секунды, а вместе 5-8 секунд. Все индексы есть.
Что может быть не так?

Интересно, как это внешний UPDATE может выполняться без внутренноего SELECT?
Он просто бессмысленен будет.

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

Теперь о запросе.

Запрос должен быть такой:

Код: sql
1.
2.
3.
update radippoollog
set login = 'mylogin', autoauth = 1
where id = ( select max(id) from radippoollog where framedipaddress = '10.99.0.10')




в таблице должны быть индексы по framedipaddress и по ID
...
Рейтинг: 0 / 0
Апдейт с селектом слишком медленно работает
    #39851844
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivИнтересно, как это внешний UPDATE может выполняться без внутренноего SELECT?при подставленной константе - элементарно.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Апдейт с селектом слишком медленно работает
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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