keyspace - Cassandra cql select sorting
create table cassandra (1)
Sus columnas de agrupamiento definen el orden (en su caso, age
y score
)
http://cassandra.apache.org/doc/cql3/CQL.html#createTableStmt
En un nodo físico determinado, las filas de una clave de partición determinada se almacenan en el orden inducido por las columnas de agrupamiento, lo que hace que la recuperación de filas en ese orden de agrupación sea particularmente eficiente (vea SELECCIONAR).
http://cassandra.apache.org/doc/cql3/CQL.html#selectStmt
La opción ORDER BY permite seleccionar el orden de los resultados devueltos. Toma como argumento una lista de nombres de columna junto con el orden de la columna (ASC para ascendente y DESC para descendiente, omitiendo que el orden sea equivalente a ASC). Actualmente los posibles pedidos son limitados (lo que depende de la tabla CLUSTERING ORDER):
- si la tabla se ha definido sin un ORDEN CLUSTERING específico, entonces los ordenamientos permitidos son el orden inducido por las columnas de agrupamiento y el inverso de ese.
- de lo contrario, los pedidos permitidos son el orden de la opción CLUSTERING ORDER y el orden inverso.
Si defino una tabla como esta usando cql:
CREATE TABLE scores (
name text,
age int,
score int,
date timestamp,
PRIMARY KEY (name, age, score)
);
Y haz un SELECCIONAR en cqlsh como este:
select * from mykeyspace.scores;
El resultado que se muestra parece estar siempre ordenado por ''edad'', luego ''puntuación'' automáticamente en orden ascendente sin importar el orden de entrada de datos (como se esperaba, las filas de retorno no están ordenadas por la clave de partición ''nombre''). Tengo las siguientes preguntas:
- ¿
SELECT
clasifica automáticamente las filas de retorno mediante las teclas de agrupamiento? - En caso afirmativo , ¿cuál es el propósito de usar la cláusula
ORDER BY
cuando se usaSELECT
? - En caso negativo, ¿cómo obtengo las filas de retorno para ordenar por las claves de agrupamiento, ya que cql no permite
ORDER BY
en unselect *
?