первого запроса (поля с key - ключи сортировки, если это важно, в аналогичных запросах могут быть поля отличные от ключей сортировки) select count() from data where keyDate >= '2021-06-05' and keyDate <= '2021-06-25' AND (keytime >= 1622918404) AND (keytime <= 1624653604) AND (msg like '%a%' or msg like '%q%')
┌────count()─┐
│ 1289678421 │
└────────────┘
Progress: 4.41 billion rows, 705.71 GB (16.18 million rows/s., 2.59 GB/s.) 98↗️ Progress: 4.41 billion rows, 705.85 GB (16.18 million rows/s., 2.59 GB/s.) 99
1 rows in set. Elapsed: 272.462 sec. Processed 4.41 billion rows, 705.85 GB (16.18 million rows/s., 2.59 GB/s.)
select count() from data where keyDate >= '2021-06-05' and keyDate <= '2021-06-25' AND (keytime >= 1622918404) AND (keytime <= 1624653604) AND keyseverity='High' AND (msg like '%a%' or msg like '%q%')
Progress: 2.87 million rows, 264.25 MB (17.79 million rows/s., 1.64 GB/s.) 35
Progress: 7.57 million rows, 656.64 MB (28.74 million rows/s., 2.49 GB/s.) 94
┌─count()─┐
│ 18676 │
└─────────┘
Progress: 7.57 million rows, 656.64 MB (26.83 million rows/s., 2.33 GB/s.) 94↙️ Progress: 7.96 million rows, 701.37 MB (28.22 million rows/s., 2.49 GB/s.) 99
1 rows in set. Elapsed: 0.283 sec. Processed 7.96 million rows, 701.37 MB (28.13 million rows/s., 2.48 GB/s.) - сорри, что дублирую вопрос, кто-нибудь знает решение или это нормальное функционирование count?
это нормально функционирование. В первом запросе Processed 4.41 billion rows , msg очень тяжелая колонка очевидно, и ее тупо надо читать с диска для 4 млрд. строк, распаковано в 705.85 GB. Во втором запросе Processed 7.96 million row, распаковано в 701.37 MB
Спасибо за ответ, но условия одинаковые, кроме одной опции в where, и если делать предварительный запрос с distint по ключам партиционирования, чтобы сократить выборку с первого запроса до второго (например, select distinct(keyseverity) from... и увидеть, что из них можно оставить только 'High' - этот вспомогательный запрос тоже будет не легким...) суммарное время выполнения останется прежним большим
замнутый круг получается, чтобы сократить select * from... limit..., можно попробовать сократить по нужному count () или понять по каким полям/условиям можно сократить выборку... а расчет count и/или поиск усекающих условий по тяжести в сумме дают такое же время, как select * from... limit ...
Обсуждают сегодня