I have a FastAPI endpoint like this:
@app.get("/api/triggers")
async def get_triggers(s_id: str = Query(None), trigger_id: str = None, limit: str = None, offset: int = None,
                    session: Session = Depends(get_db)):
    if trigger_id:
        if "," in trigger_id:
            trigger_id = trigger_id.replace(" ", "").split(',')
        else:
            trigger_id = [trigger_id]
        trigger_info = session.query(Trigger).filter(Trigger.id.in_(trigger_id)).offset(offset).limit(limit).all()
        for key in trigger_info:
            del key.geometry_global
        return trigger_info
    if s_id:
        if "," in s_id:
            s_id = s_id.split(',')
        else:
            s_id = [s_id]
        result = session.query(Trigger).options(load_only("id", "geometry_global")).offset(offset).limit(limit). \
            filter(Trigger.s_id_fk.in_(s_id)).all()
    else:
        result = session.query(Trigger).options(load_only("id", "geometry_global")).offset(offset).limit(limit).all()
    return ORJSONResponse(result)
How can I speed it up? There are million of rows in the table and json response seems to be very slow. I have added pagination, so that chunks of data can be retrieved by multiple api calls. But Is there any other way by which response can be speed up?
 
    