|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
Добрый день, подскажите, плиз, можно ли из таблицы tb1 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
одним запросом, с параметром, например =1, получить: 3 8 5 12 или 3 12 8 5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2021, 19:46 |
|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
Alex_Wong, можно ли уйти от UNION, т.к. таблица большая и важна скорость: Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2021, 20:04 |
|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
Alex_Wong, как получить одним запросом массив с такой последовательностью элементов: [3, 8, 5, 12] ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2021, 21:56 |
|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
Alex_Wong, Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2021, 22:50 |
|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
vyegorov, круто, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2021, 23:23 |
|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
vyegorov, на 3 млн. записей Код: plsql 1. 2. 3.
[img=] [img=] ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 00:20 |
|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
Alex_Wong, ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 00:21 |
|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
Alex_Wong, Таки вам надо быстро? Тогда надо именно через union делать только убрать distinct конечно из обоих подзапросов Код: plsql 1.
ну и индексы по n1 и n2 сделать конечно без union + индексы быстро не получится. Точнее я могу придумать запрос без union но он тоже для скорости индекс потребует: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
будет ли он быстрее чем 2 индекса + union - зависит от распределения ваших данных. ps: я бы еще заметил что если вам надо БЫСТРО то использование numeric вместо integer - решение плохое. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 00:55 |
|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
Maxim Boguk, спасибо за помощь и подсказки, select union на скринах выше делал без distinct добавил в таблицу 100 млн Код: plsql 1. 2. 3. 4. 5.
пробую индексы: create index tb1_key on tb1 using GIN ((array[n1, n2])); set enable_seqscan to 0; потом numeric -> integer thanks ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 01:26 |
|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
Alex_Wong, у вас какой тип данных сейчас integer или numeric если уже integer то естественно запрос надо писать как Код: plsql 1.
для быстрого union вам нужны индексы по n1 и n2 а вы их не сделали... так union точнее условия n1=1 и n2=1 быстро работать не будут. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 01:30 |
|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
Maxim Boguk, пока делаю на numeric, но однозначно будет integer т.к. это ключи на индексах ваш запрос лучший: от 30 ms до 120 ms на пяти запросах, а вот select array_agg просел в два раза .. select union без изменений: Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 01:50 |
|
получить данные из двух столбцов таблицы одним запросом
|
|||
---|---|---|---|
#18+
Maxim Boguk, vyegorov, авторps: я бы еще заметил что если вам надо БЫСТРО то использование numeric вместо integer - решение плохое Вы правы, убедился на штатных настройках postgresql-12, винт hdd7200wd, ~103млн записей с индексами по fk_ключам на integer: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
union vs array_agg : проседает в два раза, при равных прочих, если правильно понимаю, то на большой таблице с любым распределением данных (на ssd и правильных настройках), - расклад в пользу union не изменится, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2021, 12:53 |
|
|
start [/forum/topic.php?fid=53&fpage=16&tid=1994209]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
14ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 159ms |
0 / 0 |