Select * from emp where dept='IT' ORDER BY dob ASC.
Можно выбрать строки, в которых столбец «DEPT» имеет определенное значение, с помощью встроенного вторичных индексов. Однако строки будут возвращены в порядке, определенном разделителем (RandomPartitioner или OrderPreservingPartitioner). Чтобы заказать по произвольным значениям, таким как DOB, вам нужно будет сортировать на клиенте.
Или вы можете поддержать этот запрос напрямую, указав строку для каждого департамента и столбец для каждого сотрудника, с ключом (и, следовательно, отсортированным) DOB. Но будьте осторожны с общими днями рождения! И вам все равно понадобятся последующие запросы для извлечения других данных (результаты вашего SELECT *) для выбранных сотрудников, если вы не денормализуете, чтобы нужные данные также хранились в индексе.
Select * from emp where eno BETWEEN ? AND ? ORDER BY dob ASC.
Вторичный индекс выполнения запрос в Кассандре требует, по крайней мере один члена равенства, так что я думаю, что вы можете сделать отдел = «IT» И Иным> = X и Ино < = у, но не только запрос BETWEEN-стиля ,
Вы можете сделать это, создав свою собственную строку индекса, со столбцом для каждого сотрудника, с ключом на номер сотрудника, с соответствующим компаратором, чтобы все столбцы были автоматически отсортированы в порядке номеров сотрудников. Затем вы можете выполнить запрос диапазона в этой строке, чтобы получить список соответствующих сотрудников, но вам понадобятся дополнительные запросы для извлечения других данных для каждого сотрудника (dob и т. Д.), Если вы не денормализуете, чтобы нужные данные также хранились в индексе , Вам все равно нужно будет сделать заказ заказа на клиента.
Вы используете CQL (язык запросов Cassandra) для своего запроса? –