Обсуждение: Стоимость запроса в EXPLAIN с LIMIT и OFFSET
SELECT * FROM table ORDER BY column LIMIT 10 OFFSET 100 стоимость запроса растет вместе с ростом OFFSET. есть необходимость написать некую программу которая обойдет всю большую таблицу именно в порядке сортировки по конкретному столбику и пересчитает один из столбиков и сделает апдейт. индекс по column есть. если в начале работы основные затраты были на собственно расчеты. то ближе к середине в основном висит в БД тупо делая этот SELECT десятками секунд. Вопрос. как можно ускорить данный запрос? -- . ''`. Dmitry E. Oboukhov : :’ : email: unera@debian.org jabber://UNera@uvw.ru `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
Вложения
Если проходиться по всей таблице, то нет смысла делать limit/offset кроме как для экономии памяти. Тут может помочь cursor: DECLARE my_cursor CURSOR FOR SELECT ... FETCH NEXT 10 FROM my_cursor; FETCH ... ... CLOSE my_cursor; On Mon, 2011-11-28 at 01:00 +0400, Dmitry E. Oboukhov wrote: > SELECT > * > FROM > table > ORDER BY > column > LIMIT > 10 > OFFSET > 100 > > стоимость запроса растет вместе с ростом OFFSET. > > > есть необходимость написать некую программу которая обойдет всю > большую таблицу именно в порядке сортировки по конкретному столбику и > пересчитает один из столбиков и сделает апдейт. > > индекс по column есть. > > если в начале работы основные затраты были на собственно расчеты. то > ближе к середине в основном висит в БД тупо делая этот SELECT > десятками секунд. > > Вопрос. как можно ускорить данный запрос? > -- > > . ''`. Dmitry E. Oboukhov > : :’ : email: unera@debian.org jabber://UNera@uvw.ru > `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 > `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537 -- Alexander M. Pravkin
> Если проходиться по всей таблице, то нет смысла делать limit/offset > кроме как для экономии памяти. Тут может помочь cursor: > DECLARE my_cursor CURSOR FOR SELECT ... > FETCH NEXT 10 FROM my_cursor; > FETCH ... > ... > CLOSE my_cursor; Курсоры тут к сожалению не подойдут по задаче :( программа обходить таблицу может несколько месяцев. соответственно она отконнекчивается и приконнекчивается. -- . ''`. Dmitry E. Oboukhov : :’ : email: unera@debian.org jabber://UNera@uvw.ru `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537