You’ll see better performance using a slice (which is effectively what will 
happen if you put them into the same table and use query-1table-b), as each 
node will only need to merge cells/results once. It may not be twice as fast, 
but it’ll be fast enough to make it worthwhile.



On 1/8/16, 12:13 AM, "Bamoqi" <bam...@gmail.com> wrote:

>[Correction of the original message which contains typos in code.]
>
>Is it good for performance to put rows that are of different types but 
>are always queried together in the same table partition?
>
>My consideration is that whether doing so will result in better 
>memory/disk cache locality.
>
>Suppose I need to query for 2 different types of rows for a frequent 
>user request, I can use 2 tables or 1 table:
>
>2 tables:
>
>   create table t1(
>     partitionkey int primary key,
>     col1 int, col2 int, ...
>   )
>   create table t2(
>     partitionkey int primary key,
>     col3 int, col4 int, ...
>   )
>
>query-2table:
>   select col1,col2 from t1 where partitionkey = ?
>   select col3,col4 from t2 where partitionkey = ?
>
>1 table:
>
>   create table t(
>     partitionkey int,
>     rowtype tinyint,
>     col1 int, col2 int, ...
>     col3 int, col4 int, ...
>     primary key( partitionkey, rowtype )
>   )
>
>query-1table-a:
>   select col1,col2 from t where partitionkey = ? and rowtype = 1
>   select col3,col4 from t where partitionkey = ? and rowtype = 2
>
>or alternatively, query-1table-b:
>   select rowtype,col1,col2,col3,col4 from t where partitionkey = ?
>   // Used columns are `null`. Switch on `rowtype` in the app code
>
>Is there significant performance difference in query-2table, 
>query-1table-a, query-1table-b?
>Is the cassandra client/coordinator smart enough to direct subsequent 
>queries of the same (table, partitionkey) to the same node so they can 
>reuse a cached page?
>
>Regards & Thanks

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to