You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jonathan Ellis (JIRA)" <ji...@apache.org> on 2013/10/17 11:07:43 UTC

[jira] [Updated] (CASSANDRA-6048) Add the ability to use multiple indexes in a single query

     [ https://issues.apache.org/jira/browse/CASSANDRA-6048?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-6048:
--------------------------------------

         Reviewer: Sylvain Lebresne
    Fix Version/s: 2.1
       Issue Type: New Feature  (was: Improvement)
          Summary: Add the ability to use multiple indexes in a single query  (was: Add CQL3 join data filtering)

This is very interesting.  I'm going to push it over to Sylvain for review, but I have a couple high level reactions:

# We should improve the "planner" to decide whether to use this automatically rather than adding new syntax.  (This has the side benefit of allowing Thrift users to benefit as well, but the main reason is that we shouldn't make users do the query planning for us.)
# This is pretty blatantly new functionality; we shouldn't risk destabilizing 2.0 for it, let alone 1.2.  Tagging 2.1.  Please rebase to trunk and we'll review from there.

> 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
>
>
> 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)