Todos los productos
Search
Centro de documentos

Tablestore:Uso de un índice secundario para leer datos

Última actualización: Sep 29, 2026

Tablestore le permite leer una sola fila de datos o bien los datos cuyas claves primarias se encuentren dentro de un rango específico desde una tabla de índices. Si la tabla de índices contiene las columnas de atributos que desea devolver, puede leerla directamente para obtener los datos. De lo contrario, deberá consultarlos en la tabla de datos sobre la cual se creó dicha tabla de índices.

Requisitos previos

Notas de uso

  • Una tabla de índices solo sirve para leer datos.

  • Si la tabla de índices no incluye las columnas de atributos que desea devolver, debe consultar los datos en la tabla de datos sobre la cual se creó para obtener dichas columnas.

Lectura de una sola fila de datos

Llame a la operación GetRow para leer una sola fila de datos. Para obtener más información, consulte Read a single row of data.

Parámetros

Al llamar a la operación GetRow para leer datos de una tabla de índices, tenga en cuenta lo siguiente:

  • Establezca el parámetro tableName con el nombre de la tabla de índices.

  • Tablestore agrega automáticamente a la tabla de índices las columnas de clave primaria de la tabla de datos que no se definieron como columnas de índice. Estas pasan a formar parte de la clave primaria de la tabla de índices. Por lo tanto, al especificar las columnas de clave primaria de una fila en la tabla de índices, debe incluir tanto las columnas de índice con las que se creó la tabla como las columnas de clave primaria de la tabla de datos.

Ejemplos

A continuación se muestra un ejemplo de código para leer una fila de datos en una tabla de índices a partir de su clave primaria:

public static void GetRowfromIndex()
{
    OTSClient otsClient = Config.GetClient();
    // Construct the primary key. When you construct the primary key, you must specify the primary key columns of the data table that are not specified as index columns. 
    PrimaryKey primaryKey = new PrimaryKey
    {
        { "col0", new ColumnValue(0) },
        { "pk1", new ColumnValue(0) },
        { "pk2", new ColumnValue("abc") }
    };

    try
    {
        // Construct a query request object. The entire row is read if no attribute column is specified. 
        var request = new GetRowRequest(IndexName, primaryKey);

        // Call the GetRow operation to query data. 
        var response = otsClient.GetRow(request);

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

        // If no exception is returned, the operation is successful. 
        Console.WriteLine("Get row succeeded.");
    }
    catch (Exception ex)
    {
        // If an exception is returned, the operation fails. Handle the exception. 
        Console.WriteLine("Get row failed, exception:{0}", ex.Message);
    }
}

Lectura de datos cuyas claves primarias se encuentran dentro de un rango específico

Llame a la operación GetRange para leer los datos cuyas claves primarias estén dentro de un rango específico. Para obtener más información, consulte Read data whose primary key values are within a specific range.

Parámetros

Al llamar a la operación GetRange para leer datos de una tabla de índices, tenga en cuenta lo siguiente:

  • Establezca el parámetro tableName con el nombre de la tabla de índices.

  • Tablestore agrega automáticamente a la tabla de índices las columnas de clave primaria de la tabla de datos que no se definieron como columnas de índice. Estas pasan a formar parte de la clave primaria de la tabla de índices. Por ello, al especificar la clave primaria inicial y final del rango que desea consultar, debe incluir tanto las columnas de índice con las que se creó la tabla como las columnas de clave primaria de la tabla de datos.

Ejemplos

A continuación se muestra un ejemplo de código para leer datos de una tabla de índices cuyas claves primarias se encuentran dentro de un rango específico. En este caso, la primera columna de clave primaria de la tabla de índices es col1, y el valor definido para esta columna en el rango es 0.

public static void GetRangeFromIndexTable()
{
    Console.WriteLine("Start getRange from index...");
    OTSClient otsClient = Config.GetClient();
    // Specify the value of the first primary key column col1 and scan the data. 
    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("-----------------");
}             

Preguntas frecuentes

Referencias

  • Si su aplicación requiere consultas multidimensionales y análisis de datos, cree un índice de búsqueda y defina los atributos necesarios como campos de dicho índice. Después podrá consultar y analizar los datos mediante este recurso. Por ejemplo, un índice de búsqueda permite ejecutar consultas basadas en columnas que no son de clave primaria, consultas booleanas y consultas difusas. También sirve para obtener los valores máximo y mínimo, recopilar estadísticas sobre la cantidad de filas y agrupar resultados de consulta. Para obtener más información, consulte Search index.

  • Si necesita ejecutar instrucciones SQL para consultar y analizar datos, utilice la función de consulta SQL. Para obtener más información, consulte SQL query.