結果の取得とソート

単純なクエリーの場合の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;