mirror of
https://github.com/status-im/fathom.git
synced 2025-03-01 03:20:27 +00:00
optimize sql generation in datastore.InsertPageviews func.
This commit is contained in:
parent
1fea0dc66f
commit
b2d881e31b
@ -32,17 +32,17 @@ func (db *sqlstore) InsertPageviews(pageviews []*models.Pageview) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
placeholders := make([]string, 0, n)
|
// generate placeholders string
|
||||||
values := make([]interface{}, 0, n*10)
|
placeholders := strings.Repeat("(?, ?, ?, ?, ?, ?, ?, ?, ?, ?),", n)
|
||||||
|
placeholders = placeholders[:len(placeholders)-1]
|
||||||
|
|
||||||
|
// generate values slice
|
||||||
|
values := make([]interface{}, 0, n*10)
|
||||||
for i := 0; i < n; i++ {
|
for i := 0; i < n; i++ {
|
||||||
placeholders = append(placeholders, "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
|
|
||||||
values = append(values, pageviews[i].ID, pageviews[i].Hostname, pageviews[i].Pathname, pageviews[i].IsNewVisitor, pageviews[i].IsNewSession, pageviews[i].IsUnique, pageviews[i].IsBounce, pageviews[i].Referrer, pageviews[i].Duration, pageviews[i].Timestamp)
|
values = append(values, pageviews[i].ID, pageviews[i].Hostname, pageviews[i].Pathname, pageviews[i].IsNewVisitor, pageviews[i].IsNewSession, pageviews[i].IsUnique, pageviews[i].IsBounce, pageviews[i].Referrer, pageviews[i].Duration, pageviews[i].Timestamp)
|
||||||
}
|
}
|
||||||
|
|
||||||
query := `INSERT INTO pageviews(id, hostname, pathname, is_new_visitor, is_new_session, is_unique, is_bounce, referrer, duration, timestamp) VALUES `
|
query := `INSERT INTO pageviews(id, hostname, pathname, is_new_visitor, is_new_session, is_unique, is_bounce, referrer, duration, timestamp) VALUES ` + placeholders
|
||||||
query = query + strings.Join(placeholders, ",")
|
|
||||||
|
|
||||||
query = db.Rebind(query)
|
query = db.Rebind(query)
|
||||||
_, err := db.Exec(query, values...)
|
_, err := db.Exec(query, values...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user