[
https://issues.apache.org/jira/browse/CASSANDRA-6048?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13798450#comment-13798450
]
Alex Liu commented on CASSANDRA-6048:
-------------------------------------
Attached trunk patch disables "ALLOW JOIN FILTERING ". To run in join
filtering, two indexes are needed in the clauses
e.g.
{code}
create table test (key text, m text, n text, qty int, color text, size text, o
text, p text, primary key(key, m, n));
create index colr on test (color);
create index qty on test (qty);
create index size on test (size);
select * from test where qty=100 and color ='red' and size='s' allow filtering;
{code}
Internal optimization when to use join when to use one index + loop are open
for further discussion.
> Add the ability to use multiple indexes in a single query
> ---------------------------------------------------------
>
> Key: CASSANDRA-6048
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6048
> Project: Cassandra
> Issue Type: New Feature
> Components: Core
> Reporter: Alex Liu
> Assignee: Alex Liu
> Fix For: 2.1
>
> Attachments: 6048-1.2-branch.txt, 6048-trunk.txt
>
>
> Existing data filtering uses the following algorithm
> {code}
> 1. find best selective predicate based on the smallest mean columns count
> 2. fetch rows for the best selective predicate predicate, then filter the
> data based on other predicates left.
> {code}
> So potentially we could improve the performance by
> {code}
> 1. joining multiple predicates then do the data filtering for other
> predicates.
> 2. fine tune the best predicate selection algorithm
> {code}
> For multiple predicate join, it could improve performance if one predicate
> has many entries and another predicate has a very few of entries. It means a
> few index CF read, join the row keys, fetch rows then filter other predicates
> Another approach is to have index on multiple columns.
--
This message was sent by Atlassian JIRA
(v6.1#6144)