Обновить
9
0
Кирилл Шваков@kshvakov

Пользователь

Отправить сообщение
С join он использует index only scan, что даёт выигрыш на выборку. Больше сложностей с получением общего числа строк в выборке, иногда помогает создание дополнительной таблицы со счетчиками и параметрами, тогда получение общего количества это просто сумма по параметрам, а вот с выборкой по подстроке уже сложности
В Постгресе для этого существуют «частичные индексы». Подробнее можно ознакомиться документации
«Распараллеливание» запросов будет в 9.6, подробнее можно у Hubert'a почитать depesz.com

В самом постгресе хинтов не будет, по крайней мере пока OptimizerHintsDiscussion, но есть http://pghintplan.osdn.jp/pg_hint_plan.html
g++ -std=gnu++11 (gcc version 4.8.4)

Intel® Core(TM) i7-2600 CPU @ 3.40GHz

sign: 4.49 vs 5.82
abs: 5.12 vs 6.15
mini: 6.30 vs 15.02
maxi: 5.92 vs 14.99
minu: 6.13 vs 14.88
maxu: 6.38 vs 15.30

Intel® Xeon® CPU E5-2620 0 @ 2.00GHz

sign: 7.08 vs 9.13
abs: 6.32 vs 9.53
mini: 9.59 vs 22.66
maxi: 9.25 vs 22.94
minu: 9.76 vs 22.87
maxu: 9.94 vs 23.15

clang++ -std=gnu++11 (clang version 3.4)

Intel® Core(TM) i7-2600 CPU @ 3.40GHz

sign: 3.42 vs 4.11
abs: 3.26 vs 4.90
mini: 5.55 vs 11.98
maxi: 6.27 vs 12.00
minu: 5.65 vs 12.46
maxu: 5.55 vs 12.38

Intel® Xeon® CPU E5-2620 0 @ 2.00GHz

sign: 5.64 vs 6.74
abs: 5.57 vs 8.05
mini: 8.39 vs 18.64
maxi: 9.48 vs 18.66
minu: 8.92 vs 19.50
maxu: 8.92 vs 19.33
Действительно, или так:

with recursive hw(_array, i, r) as (

    values (array['H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!'], 1, '')
    union all
    select _array, i + 1, r || _array[i] from hw where i <= array_length(_array, 1)
)
select r as result from hw order by i desc limit 1;



чтоб уж совсем прочувствовать всю мощь )

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность