คีย์แฮชของคุณ (ลำดับหลัก) ต้องไม่ซ้ำกัน (เว้นแต่คุณจะมีช่วงตามที่ผู้อื่นระบุไว้)
ในกรณีของคุณในการสืบค้นตารางของคุณคุณควรมีดัชนีรอง
|  ID  | DataID | Created | Data |
|------+--------+---------+------|
| hash | xxxxx  | 1234567 | blah |
Hash Key ของคุณคือ ID ดัชนีรองของคุณถูกกำหนดเป็น: DataID-Created-index (นั่นคือชื่อที่ DynamoDB จะใช้)
จากนั้นคุณสามารถสร้างแบบสอบถามดังนี้:
var params = {
    TableName: "Table",
    IndexName: "DataID-Created-index",
    KeyConditionExpression: "DataID = :v_ID AND Created > :v_created",
    ExpressionAttributeValues: {":v_ID": {S: "some_id"},
                                ":v_created": {N: "timestamp"}
    },
    ProjectionExpression: "ID, DataID, Created, Data"
};
ddb.query(params, function(err, data) {
    if (err) 
        console.log(err);
    else {
        data.Items.sort(function(a, b) {
            return parseFloat(a.Created.N) - parseFloat(b.Created.N);
        });
        // More code here
    }
});
โดยพื้นฐานแล้วคำถามของคุณมีลักษณะดังนี้: 
SELECT * FROM TABLE WHERE DataID = "some_id" AND Created > timestamp;
ดัชนีทุติยภูมิจะเพิ่มหน่วยความสามารถในการอ่าน / เขียนที่จำเป็นดังนั้นคุณต้องพิจารณาสิ่งนั้น มันยังดีกว่าการสแกนมากซึ่งจะมีค่าใช้จ่ายสูงในการอ่านและตรงเวลา (และฉันเชื่อว่า จำกัด ไว้ที่ 100 รายการ)
นี่อาจไม่ใช่วิธีที่ดีที่สุดในการทำ แต่สำหรับคนที่เคยใช้ RD (ฉันคุ้นเคยกับ SQL ด้วย) เป็นวิธีที่เร็วที่สุดในการทำให้ได้ประสิทธิผล เนื่องจากไม่มีข้อ จำกัด เกี่ยวกับสคีมาคุณสามารถสร้างสิ่งที่ใช้ได้ผลและเมื่อคุณมีแบนด์วิดท์ในการทำงานอย่างมีประสิทธิภาพสูงสุดแล้วคุณสามารถเปลี่ยนแปลงสิ่งต่างๆรอบตัวได้
     
              
CreatedAtค่ามากกว่าจุดหนึ่งได้