有一本书格,该表格具有以下定义。 书名将保存在列名中 - 属性将是一个映射,其中将保存诸如作者姓名、出版年份等属性。
CREATE TABLE book (
bookid uuid PRIMARY KEY,
createdat timestamp,
createdon timestamp,
description text,
attributes map<text, text>,
name text
) CREATE INDEX bookbyname ON project (name);
问题 - 应该开发一个查询,可以从 UI 上的通用搜索运行,并提供一个字符串。该字符串应在属性列和名称上查询 [包含]。
对于属性,由于它是 MAP,所以支持 CONTAINS 关键字。然而,如何在索引上执行包含查询?在这种情况下,是通过 bookbyname(名称)字段进行查询的。
where name = '...'
? - Stefan Podkowinskiname
列似乎与bookid
具有相同的基数。在高基数列上建立二级索引不会有很好的性能表现。如果你确实需要按书名查询,你应该考虑构建一个bookbyname
查询表。这并不能解决你目前的主要问题,但它可以避免以后一些性能方面的麻烦。 - Aaron