結果の取得とソート
単純なクエリーの場合のSELECTコマンドの使用。
データを選択するテーブルにクエリーするのは、データがデータベースに格納されているためです。CQLは、SQLと同様に、単純または複雑な修飾子を使用してデータを選択できます。最も単純な場合、クエリーは、テーブルにあるデータをすべて選択します。最も複雑な場合では、クエリーは、どのデータを取得して表示するかを記述し、ユーザー定義関数に基づいて新しい値の計算も行います。
手順
-
以下の例は、categoryをフィルターとして使用するクエリーを作成する方法を示しています。
cqlsh> SELECT * FROM cycling.cyclist_category WHERE category = 'SPRINT';
categoryがパーティション・キーやクラスター化カラムでない場合、このクエリーは拒否されることに注意してください。クエリーは、cyclist_categoryテーブル全体で連続取得を必要とします。Cassandraのような分散データベースでは、これは把握すべき重要な概念です。すべてのノードにわたるデータを全部スキャンするのは非常に時間がかかるため、実行の妨たげとなります。パーティション・キーとクラスター化カラムを
WHERE
条件句で使用すると、連続した行のセットを選択することになります。「テーブルのインデックス作成」セクションの説明のように、クエリーは、セカンダリー・インデックスを使用してフィルターすることができます。lastnameに基づいたクエリーは、lastnameカラムがindexedの場合には満足のいく結果となります。
-
すべてのデータを選択する代わりに、カラムを選択して表示することもできます。
cqlsh> SELECT category, points, lastname FROM cycling.cyclist_category;
-
大きなテーブルについては、
LIMIT
を使用して、取得する行の数を制限します。デフォルトの制限は10,000行です。データをサンプリングするには、小さい数を選択します。10,000行を超える行を取得するには、LIMIT
に大きい値を設定します。cqlsh> SELECT * From cycling.cyclist_name LIMIT 3;
-
ORDER BY
条件句を使用すると、表示順を微調整できます。パーティション・キーは、WHERE
条件句で定義する必要があります。また、ORDER BY
条件句は、順序指定に使用するクラスター化カラムを定義します。cqlsh> CREATE TABLE cycling.cyclist_cat_pts ( category text, points int, id UUID,lastname text, PRIMARY KEY (category, points) ); SELECT * FROM cycling.cyclist_cat_pts WHERE category = 'GC' ORDER BY points ASC;
-
タプルは、全体で取得されます。この例では、
AS
を使用してタプル名のヘッダーを変更します。cqlsh> SELECT race_name, point_id, lat_long AS CITY_LATITUDE_LONGITUDE FROM cycling.route;