Cassandra SASI индекс с несколькими полями - PullRequest
0 голосов
/ 24 апреля 2019

Индексы Cassandra SASI позволяют выполнять запросы, аналогичные SQL LIKE, в одном поле. Мне было интересно, если можно выполнить запросы LIKE на несколько полей:

SELECT * FROM CUSTOMERS
WHERE FIRSTNAME LIKE 'joh%'
AND LASTNAME LIKE 'smi%'

Возможно ли это с помощью индексов SASI или чего-то еще в Кассандре?

1 Ответ

1 голос
/ 24 апреля 2019

Да, это возможно, но только при использовании ALLOW FILTERING.

Согласно документам DataStax - «Если используется ALLOW FILTERING, SASI также поддерживает запросы с несколькими предикатами, использующими AND. В SASI подводные камни производительности составляютиспользование фильтрации не реализовано, потому что фильтрация не выполняется, даже если используется ALLOW FILTERING "- https://docs.datastax.com/en/dse/5.1/cql/cql/cql_using/useSASIIndexConcept.html

SELECT * FROM CUSTOMERS WHERE FIRSTNAME LIKE 'joh%' AND LASTNAME LIKE 'smi%' allow filtering;

Но это всего лишь правило синтаксиса, и оно не должно вызывать снижение производительности при использовании SASIиндекс по обоим столбцам.

О реализации SASI можно прочитать здесь: http://www.doanduyhai.com/blog/?p=2058

...