假设你有一行电影和一个类别列表,即
create table movie(
uuid timeuuid,
name text,
category list<text>
primary key (uuid)
);
insert into movie (uuid,name,category) values(now(), 'my movie', ['romance','comedy']);
insert into movie (uuid,name,category) values(now(), 'other movie', ['action','comedy']);
Run Code Online (Sandbox Code Playgroud)
是否有可能有效地执行以下操作:
select * from movie where category='comedy'
select * from movie where category='comedy' and category='action'
Run Code Online (Sandbox Code Playgroud)
此用例是针对MySQL数据库的最常见查询.
Lyu*_*rov 16
从cassandra 2.1开始,是的,它是:
create table cinema.movie(
id timeuuid,
name text,
category list<text>,
primary key (id)
);
CREATE index ON cinema.movie (category);
INSERT INTO cinema.movie (id, name, category) VALUES (now(), 'my movie', ['romance','comedy']);
SELECT * FROM cinema.movie WHERE category CONTAINS 'romance';
uuid | category | name
--------------------------------------+------------------------+----------
b9e0d7f0-995f-11e3-b11c-c5d4ddc8930a | ['romance', 'comed`y'] | my movie
(1 rows)
Run Code Online (Sandbox Code Playgroud)
PS你的查询中有错误,你,
在类别声明后的create table语句中缺少一个,而你无法now()
在UUID上使用该函数,而是在寻找TIMEUUID类型.
请记住,当使用这些集合时,性能不会很好(如何定量),为这种事情创建一个单独的表可能更好.
归档时间: |
|
查看次数: |
3742 次 |
最近记录: |