I have a SELECT sentence in mysql:
SELECT * FROM `my_flows` WHERE deleted = 0 AND status = 0 AND end_time > '2022-02-03 13:54:48.173'
and there are indexes in columns deletedćstatus and end_time and a primary key id.
I wan't to get all the results for processing and I have two ways:
- use
rows scanlike this ingorm:
rows, err := db.Model(&ModelInfo{}).Where(...).Rows()
// ignore error judge
defer rows.Close()
for rows.Next() {
....
}
- use
page limitwhich I record the latestidfor next page:
var latestId int64
for {
var result []*ModelInfo
err := db.Where(...).Where("id > ?", latestId).Order("id").Limit(10).Find(&result).Error()
// ignore error judge
if len(result) == 0 {
break
}
for _, r := range result {
.......
latestId = result.Id
}
}
I want to know which is the best? Please help me, thanks very much.