SELECT data FROM table AS s PREWHERE (s.project_id = 2) AND (s.time >= '2020-07-24 06:10:00') AND (s.time < '2020-07-25 06:10:00') AND (s.type != '') ORDER BY "duration" desc LIMIT 10
SELECT data FROM table AS s PREWHERE (s.project_id = 2) AND (s.time >= '2020-07-24 06:10:00') AND (s.time < '2020-07-25 06:10:00') AND (s.type != '') ORDER BY "duration" desc LIMIT 10
у вас order by есть, он будет читать все строки соответствующие условиям сравните сколько считано с prewhere и where? лучше смотреть в трейс
К сожалению, у меня нет идей, кроме «вот так сложилось» (например, разбросаны значения для чтения по таблице, приходится читать много кусков, искать соотв строки в них, и выходит такой дикий перерасход по данным)
Есть одна таблица из 200М записей с движком ReplacingMergeTree Зависает запросе select * from tabname limit 1, но если добавить любое условие, то отрабатывает. Кто-то с таким сталкивался? Куда копать?
партов сколько в таблице? если очень много - было такое тоже...
Еще заметил что оптимизация (MergingSortedTransform?) работает только если ORDER BY first_column_in_key . Если уже сортировать по 2ой колонке в ключе - то опять читает все данные. Так должно быть?