powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Прошу пояснения с JOIN и под запросом
4 сообщений из 4, страница 1 из 1
Прошу пояснения с JOIN и под запросом
    #39716083
davefree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день уважаемые!

Прошу объяснить почему дублируются строки выборки,
Есть 2 огромных таблицы c логами (2-5 млн записей)
при выполнении

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT * FROM (
   SELECT
      round(sum(bytecount) :: NUMERIC / 1024 / 1024 / 1024, 2) AS Size,
     host(srcaddr)
   FROM "NetFlowData"
  GROUP BY srcaddr
  ORDER BY Size DESC
  LIMIT 10
   ) as nf



Результат логичный, 10 строк

|4.66 | 192.168.1.222 |
|1.97 | 176.222.187.33 |
|1.78 | 95.68.XXX.XXX |
|1.6 | 2.94.187.46 |
|1.29 | 46.188.45.42 |
|0.99 | 10.110.X.X |
|0.88 | 1XX.235.1X.XX |
|0.86 | 17x.222.1XX.XX |
|0.81 | 176.222.1XX.XX|
|0.79 | 176.222.1XX.XX |


Однако при добавления LEFT JOIN данные удваиваются
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT * FROM (
   SELECT
      round(sum(bytecount) :: NUMERIC / 1024 / 1024 / 1024, 2) AS Size,
     srcaddr
  FROM "NetFlowData"
  GROUP BY srcaddr
  ORDER BY Size DESC
  LIMIT 10
   ) as nf
  LEFT JOIN "Range" as gf ON nf.srcaddr << gf.network



4.66 | 192.168.1.222/32 | 192.168.0.0/16 | -
2.16 | 176.XXX.XXX.33/32 | 176.XXX.XXX.0/19 | KZ
2.16 | 176.XXX.XXX.33/32 | 176.XXX.XXX.0/21 | KZ
1.78 | 95.68.71.107/32 | 95.68.68.0/22 | LV
1.6 | 2.94.XXX.46/32 | 0.0.0.0/3 | US
1.6 | 2.94.XXX.46/32 | 2.94.XXX.0/24 | RU
1.29 | 46.XXX.45.42/32 | 46.XXX.44.0/23 | RU
1.29 | 46.XXX.45.42/32 | 46.XXX.32.0/19 | RU
1.29 | 46.XXX.45.42/32 | 46.XXX.0.0/17 | RU
1.04 | 10.110.4.5/32 | 10.0.0.0/8 | -
1.04 | 10.110.4.5/32 | 0.0.0.0/3 | US
0.88 | XXX.235.12.194/32 | XXX.0.0.0/8 | RU
0.88 | XXX.235.12.194/32 | XXX.235.0.0/20 | RU
0.88 | XXX.235.12.194/32 | XXX.235.12.0/23 | RU
0.88 | XXX.235.12.194/32 | XXX.235.0.0/16 | RU
0.86 | 176.XXX.XXX.142/32 | 176.XXX.XXX.0/24 | KZ
0.86 | 176.XXX.XXX.142/32 | 176.XXX.XXX.0/19 | KZ
0.86 | 176.XXX.XXX.17/32 | 176.XXX.XXX.0/24 | KZ
0.86 | 176.XXX.XXX.17/32 | 176.XXX.XXX.0/19 | KZ
0.79 | 176.XXX.XXX.19/32 | 176.XXX.XXX.0/24 | KZ
0.79 | 176.XXX.XXX.19/32 | 176.XXX.XXX.0/19 | KZ
...
Рейтинг: 0 / 0
Прошу пояснения с JOIN и под запросом
    #39716170
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
davefree,

А почему не должны если попадается больше одного Range подходящего?

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru [/quot]
...
Рейтинг: 0 / 0
Прошу пояснения с JOIN и под запросом
    #39716186
davefree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,
решил простым способом + получил прирост к скорости,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT *,
      (SELECT json_build_array(country,countryindex) FROM "Range" WHERE  network>>nf.srcaddr LIMIT 1) AS jsoncountry
FROM (
   SELECT
     round(SUM(bytecount) :: NUMERIC / 1024 / 1024 / 1024, 2) AS SIZE,
     srcaddr
   FROM "NetFlowData"
   GROUP BY srcaddr
   ORDER BY SIZE DESC
   LIMIT 10) AS nf
...
Рейтинг: 0 / 0
Прошу пояснения с JOIN и под запросом
    #39716318
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
davefree,

Это если есть гарантия что у совпадающих ranges одна страна (на самом деле оно не так даже насколько я понимаю) и надо самый узкий range смотреть а не первый попавшийся.


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru [/quot]
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Прошу пояснения с JOIN и под запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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