ATSでは、PartitionKeyはインデックスではなく、分布ルックアップとして使用されます。ATSでの作業のレベルから、PartitionKeyと「サーバー」/ノードが1:1の関係を共有することを検討してください。 (舞台裏ではこれは真実ではありませんが、同じ物理/仮想ノードに存在するPartitionKeysの最適化などの概念は、Azureのコンシューマーが処理する必要があるものからいくつかのレベルで抽象化されています。これらの詳細は純粋に全体の内部にあります。 AzureインフラストラクチャとATSの場合は、それが最適であると想定するのが最善です...別名「心配しないでください」)
DBMSとATSのコンテキストでは、RowKeyは、類似したノード全体でデータを見つけるのに役立つという点で、「インデックス」に最も近いものです。質問の1つに直接答えるために、RowKeyはPartitionKey内のインデックスです。
ただし、ボックスの外に少し踏み出すと、 PartitionKeyを使用すると、従来のインデックスの考え方に近いパフォーマンスを得ることができますが、これは、データがATSノード全体に分散されるという性質があるためです。最初にPartitionKeyに、次にRowKeyにレイアウトを最適化する必要があります。(別名、キー入力可能な値が1つしかない場合は、それをPartKeyにします)
一般的に、クエリは最も効率的なものから最も効率的でないものの順に実行されます。
1. PartitionKey=xおよびRowKey=y(およびOtherProp = z)
ルックアップは正しいノードに到達し、次にパーティション上のインデックス付きプロップに到達するためです
2. PartitionKey = x(およびOtherProp = z)
適切なノードに到達しますが、ATSequviに到達するためです。全表スキャンの
3. OtherProp = z
パーティションスキャンを実行してから、テーブルスキャンを実行する必要があるためです。
それで、あなたの直接の質問に
私はこれが答えられるとは思わない。その主観的(すなわち、「何が速いのか?」)。常にQuery2よりも遅くなりますが、10行の場合、「速度」がミリ秒になる可能性があります。
(同様のテーマ)クエリ1よりも高速になります。クエリ2を実行できるときはいつでも、
したがって、その説明と質問から、本当の答えは、アーキテクトがATSをどのように使用するかにかかっています。
データセット(現在の成長と予想される成長の両方)に基づいて、パーティションに到達し、行に到達できるようにするための適切なスキームを決定する必要があります。ルックアップがどのように行われるかを知っていると、どのパスが十分に速くそこに到達するか、より多くの部分、より少ない行-対より少ない部分、より多くの行などについて論理的な決定を下すことができます