Предположит, у меня есть таблица со следующей структурой create table tasks ( user_id uuid, name text, task_id uuid, description text, primary key ((user_id), name, task_id) );
Как правильно выбрать структуру таблиц в кассандре?
Это позволяет мне получить все задачи для отсортированного по name
возрастанию пользователя. Также я добавил task_id
в первичный ключ, чтобы избежать воссоздания. Следующий запрос имеет select * from tasks where user_id = ?
, а также select * from tasks where user_id = ? and name > ?
Однако, я не могу получить задание с конкретным task_id
. Например, после запроса аварий select * from tasks where user_id = ? and task_id = ?
с этой ошибкой PRIMARY KEY column "task_id" cannot be restricted as preceding column "name" is not restricted
Это требует name
столбца должны быть указано, но на данный момент у меня есть только task_id
(из URL, например) и user_id
(от сессии).
Как создать эту таблицу для выполнения обоих запросов? Или мне нужна отдельная таблица для второго случая? Какова общая картина в этой ситуации?
Я рассматривал этот вариант, на самом деле он работает.Но я думаю, что это может быть неуместным в случае столбцов с высокой мощностью. В этом случае мы сужим запрос user_id, и кажется, что количество задач для пользователя невелико. Таким образом, индекс может помочь. Но что, если у меня есть сотни тысяч строк, и мне нужно найти конкретный. Индекс может быть неэффективным? – AskhatOmarov