cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Edward Capriolo (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-4915) CQL should prevent or warn about inefficient queries
Date Thu, 15 Nov 2012 18:54:13 GMT

    [ https://issues.apache.org/jira/browse/CASSANDRA-4915?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13498239#comment-13498239
] 

Edward Capriolo commented on CASSANDRA-4915:
--------------------------------------------

I am unclear on what "WITH FILTERING ALLOWED" does. Is it a clause that must be applied to
let this query run? Or is it a clause that changes how the query runs?

SELECT * FROM videos WHERE videoname = 'My funny cat' WITH FILTERING ALLOWED;

SELECT * FROM videos WHERE videoname = 'My funny cat' ;

I do agree that LIMIT is the wrong concept because that limits the result set and that will
not short-circuit a query.

A better syntax could be this: 

SELECT * FROM videos WHERE videoname = 'My funny cat' WITH MAX_EXAMINED = 5;

Where MAX_EXAMINED would be a count of columns/rows? processed. Whenever we iterate over more
then MAX_EXAMINED we shout circuit and return what we have. (which may be nothing)
                
> CQL should prevent or warn about inefficient queries
> ----------------------------------------------------
>
>                 Key: CASSANDRA-4915
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4915
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 1.2.0 beta 1
>            Reporter: Edward Capriolo
>            Priority: Minor
>
> When issuing a query like:
> {noformat}
> CREATE TABLE videos (
>   videoid uuid,
>   videoname varchar,
>   username varchar,
>   description varchar,
>   tags varchar,
>   upload_date timestamp,
>   PRIMARY KEY (videoid,videoname)
> );
> SELECT * FROM videos WHERE videoname = 'My funny cat';
> {noformat}
> Cassandra samples some data using get_range_slice and then applies the query.
> This is very confusing to me, because as an end user am not sure if the query is fast
because Cassandra is performing an optimized query (over an index, or using a slicePredicate)
or if cassandra is simple sampling some random rows and returning me some results. 
> My suggestions:
> 1) force people to supply a LIMIT clause on any query that is going to
> page over get_range_slice
> 2) having some type of explain support so I can establish if this
> query will work in the
> I will champion suggestion 1) because CQL has put itself in a rather unique un-sql like
position by applying an automatic limit clause without the user asking for them. I also do
not believe the CQL language should let the user issue queries that will not work as intended
with "larger-then-auto-limit" size data sets.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message