меня есть база где есть массив из людей, массив из мест и ссылка на документ. В базе примерно 100кк записей, запрос типа
SELECT
count()
FROM
table
WHERE arrayExists(x->x like '%Person%', persons)
очень сильно тормозит
Куда смотреть?)
потому что всю таблицу сканирует да еще потом и на CPU фильтрацию массива делате у вас же массивы в primary key не входят если добавите AND date_field BETWEEN ... то будет сильно быстрее (зависит от того как много партов в BETWEEN попадет)
Просто у меня же индексы повешены для этого.
какие именно индексы? data skip index на массив? какого типа?
INDEX idx_table_persons persons TYPE minmax GRANULARITY 3,
можно попробовать массив развернуть через array join И делать select count(distinct xx) where person like '%Person%' насколько я знаю проверка массива однопоточна, при очень длинных массивах можно словить тормоза
Обсуждают сегодня