日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用二級索引讀取數據

表格存儲提供了單行讀取和范圍讀取的查詢方式用于讀取索引表中數據。當返回的屬性列在索引表中時,您可以直接讀取索引表獲取數據,否則請自行反查數據表獲取數據。

前提條件

注意事項

  • 索引表只能用于讀取數據。

  • 當需要返回的屬性列不在索引表中時,您需要自行反查數據表來獲取數據。

單行讀取數據

調用GetRow接口讀取一行數據。更多信息,請參見讀取單行數據

參數

使用GetRow接口讀取索引表中數據時有如下注意事項:

  • tableName需要設置為索引表名稱。

  • 由于系統會自動將未出現在索引列中的數據表主鍵補齊到索引表主鍵中,所以設置行的主鍵時,需要同時設置索引表索引列和補齊的數據表主鍵。

示例

以下示例用于讀取索引表中指定主鍵的行數據。

public static void GetRowfromIndex()
{
    OTSClient otsClient = Config.GetClient();
    //構造主鍵。構造主鍵時必須帶上補齊到索引表中的數據表主鍵。
    PrimaryKey primaryKey = new PrimaryKey
    {
        { "col0", new ColumnValue(0) },
        { "pk1", new ColumnValue(0) },
        { "pk2", new ColumnValue("abc") }
    };

    try
    {
        //構造查詢請求對象,此處未指定讀取的列,默認讀取整行數據。
        var request = new GetRowRequest(IndexName, primaryKey);

        //調用GetRow接口查詢數據。
        var response = otsClient.GetRow(request);

        Console.WriteLine("Primary Key: " + response.PrimaryKey);
        Console.WriteLine("Attribute Column: " + response.Columns[0]);

        //如果沒有拋出異常,則說明執行成功。
        Console.WriteLine("Get row succeeded.");
    }
    catch (Exception ex)
    {
        //如果拋出異常,則說明執行失敗,處理異常。
        Console.WriteLine("Get row failed, exception:{0}", ex.Message);
    }
}

范圍讀取數據

調用GetRange接口讀取一個范圍內的數據。更多信息,請參見范圍讀取數據

參數

使用GetRange接口讀取索引表中數據時有如下注意事項:

  • tableName需要設置為索引表名稱。

  • 由于系統會自動將未出現在索引列中的數據表主鍵補齊到索引表主鍵中,所以設置起始主鍵和結束主鍵時,需要同時設置索引表索引列和補齊的數據表主鍵。

示例

以下示例用于讀取索引表中指定主鍵范圍內的數據。其中第一列主鍵col1的列值為0。

public static void GetRangeFromIndexTable()
{
    Console.WriteLine("Start getRange from index...");
    OTSClient otsClient = Config.GetClient();
    //指定第一主鍵Col1的值,進行掃描。
    PrimaryKey inclusiveStartPrimaryKey = new PrimaryKey
    {
        { "col1", new ColumnValue(0) },
        { "pk1",  ColumnValue.INF_MIN },
        { "pk2", ColumnValue.INF_MIN }
    };

    PrimaryKey exclusiveEndPrimaryKey = new PrimaryKey
    {
        { "col1", new ColumnValue(0) },
        { "pk1",  ColumnValue.INF_MAX },
        { "pk2", ColumnValue.INF_MAX }
    };

    GetRangeRequest request = new GetRangeRequest(IndexName, GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey);

    GetRangeResponse response = otsClient.GetRange(request);
    IList<Row> rows = response.RowDataList;
    PrimaryKey nextStartPrimaryKey = response.NextPrimaryKey;
    while (nextStartPrimaryKey != null)
    {
        request = new GetRangeRequest(TableName, GetRangeDirection.Forward, nextStartPrimaryKey, exclusiveEndPrimaryKey);
        response = otsClient.GetRange(request);
        nextStartPrimaryKey = response.NextPrimaryKey;
        foreach (var row in response.RowDataList)
        {
            rows.Add(row);
        }
    }

    foreach (var row in rows)
    {
        PrintRow(row);
    }

    Console.WriteLine("TotalRowsRead: " + rows.Count);
}

private static void PrintRow(Row row)
{
    Console.WriteLine("-----------------");

    foreach (KeyValuePair<string, ColumnValue> entry in row.GetPrimaryKey())
    {
        Console.WriteLine(entry.Key + ":" + entry.Value);
    }

    foreach (Column entry in row.GetColumns())
    {
        Console.WriteLine(entry.Name + ":" + entry.Value);
    }

    Console.WriteLine("-----------------");
}             

常見問題

相關文檔

  • 當日常業務中有非主鍵列查詢、多列組合查詢、模糊查詢等多維查詢需求以及求最值、統計行數、數據分組等數據分析需求時,您可以將這些屬性作為多元索引中的字段并使用多元索引查詢與分析數據。 更多信息,請參見多元索引

  • 如果需要使用SQL查詢和分析數據,您可以使用SQL查詢功能實現。更多信息,請參見SQL查詢