по строкам, но не используется для != и NOT LIKE , это так задумано?
версия 22.8.5.29
во всех случаях используется PK если поля из PK в WHERE как проверяли что не используется?
explain indexes = 1 запрос с where col = 'a' : PrimaryKey Parts: 0/3070, Granules: 0/4826 запрос с where col != 'a': PrimaryKey Parts: 3070/3070, Granules: 4826/4826
в обоих случаях показывает что PK использовался и в результате PK установили что во втором слуаче надо читать всю таблицу потому что col != a у вас равномерно по всем партам и всем гранулам размазан
да, неудачный пример, сорри ) в оригинале другая колонка с другим распределением значений, сейчас переделаю )
переделал да, для != всё хорошо, проблема только с NOT LIKE по префиксу, с чего всё собственно и началось https://fiddle.clickhouse.com/0e0680c3-d5d6-4e65-88fc-afc052acd284
https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#functions-support должно поддерживаться думаю что стоит создать issue на github скиньте туда explain и ссылку на fiddle и ссылку на доку и спросите почему парты не отбрасываются
немного переделал https://fiddle.clickhouse.com/7ebf2abf-f126-42d8-9d2f-a3837af7371b (SelectExecutor): Key condition: unknown (SelectExecutor): Selected 3/3 parts by partition key, 3 parts by primary key, 36/36 marks by primary key, 36 marks to read from 3 ranges Думаю основная причина в этом это странно. явно какой то баг
да с чего баг-то? нельзя в дереве найти not like и != тоже нельзя, только скан колонки, что и будет в этом случае
с != индекс используется https://fiddle.clickhouse.com/88782b9c-0826-4213-a79a-5a95b356ffa4 а почему нельзя NOT LIKE 'a%' реализовать через исключение гранул между двумя метками, если они обе LIKE 'a%'?
там not like с префиксом... != кстати работает и парты отсекает ссылку на доку я привел в которой сказано обратное
Обсуждают сегодня