Геномика: Какой самый эффективный индекс пространственного интервала (chr: ENUM, pos: INT8RANGE)? - PullRequest
0 голосов
/ 27 апреля 2020

В геномике интервал состоит из хромосомы [1-22, x, y] и положения на хромосоме (начало, конец). Хромосома может быть закодирована как enum с 24 различными значениями, позиция на хромосоме может быть закодирована как INT8RANGE.

Для того, чтобы выполнять эффективные запросы диапазона и интервальные объединения, я хотел бы построить индекс на столбцы (chr, pos), но я прочитал, что индекс GiST будет относительно неэффективным, если его первый столбец имеет только несколько отдельных значений, даже если в дополнительных столбцах есть много различных значений .

Каков наилучший тип индекса в диапазоне генома c в PostgreSQL?

1 Ответ

1 голос
/ 28 апреля 2020

Предупреждение в документации неверно по моему опыту.

Или, по крайней мере, его правильность зависит от довольно бесполезной интерпретации "относительно". Относительно чего? Используете другой тип индекса, который не поддерживает операции, которые вам нужно поддерживать? Индексирование другого набора данных, который не является тем набором данных, который нужно индексировать?

Вы можете поменять местами порядок столбцов в индексе, но я сомневаюсь, что это тоже будет улучшением. Вероятно, это будет зависеть от того, насколько широки диапазоны, как правило, поэтому вам придется попробовать его на своем фактическом наборе данных, а не только на каких-то наивных случайных числах. Я бы даже не протестировал это, пока вы не увидите, что у вас есть проблема с более интуитивным использованием индекса.

Я бы go с указанным вами индексом, а затем попытался бы решить проблемы с производительностью, если / когда они возникли, и у вас есть доказательства того, в чем проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...