単一シャード問合せのための問合せ処理
単一シャード問合せは、1つのシャードでのみデータをスキャンする必要があり、他のシャードでデータを検索する必要がない問合せです。
単一シャード問合せは、特定のシャードに接続してそのシャードに問合せを発行するクライアントに似ています。このシナリオでは、問合せ全体が関与する単一のシャードで処理され、コーディネータは処理された行をクライアントに返すだけです。コーディネータの計画は、リモート・マップ・カーソルに似ています。
たとえば、次の問合せは、顧客123のデータが1つのシャードのみにあるため、そのシャードにすべてマップされます。
SELECT count(*) FROM customers c, orders o WHERE c.custno = o.custno and c.custno = 123;
この問合せには、問合せのコンパイル時(リテラル)または問合せ開始時(バインド)に判明する1つのシャードにのみマップするシャード・キーの条件が含まれています。問合せは該当するシャードですべて処理されます。
単一シャード問合せでは次のものがサポートされます。
-
等価およびINリスト(
Area = 'West'
など) -
リテラル、バインド、またはリテラルとバインドの式を含む次のような条件
Area = :bind Area = CASE :bind <10 THEN ‘West’ ELSE ‘East’ END
-
SELECT
、UPDATE
、DELETE
、INSERT
、FOR UPDATE
およびMERGE
。UPSERT
はサポートされていません。