Răsfoiți Sursa

Add indexes to improve performance

Frédéric Guillot 2 ani în urmă
părinte
comite
5dc44453ba
2 a modificat fișierele cu 18 adăugiri și 2 ștergeri
  1. 16 0
      internal/database/migrations.go
  2. 2 2
      internal/storage/entry_query_builder.go

+ 16 - 0
internal/database/migrations.go

@@ -783,4 +783,20 @@ var migrations = []func(tx *sql.Tx) error{
 		_, err = tx.Exec(sql)
 		return err
 	},
+	func(tx *sql.Tx) (err error) {
+		sql := `
+			-- Speed up has_enclosure
+			CREATE INDEX enclosures_entry_id_idx ON enclosures(entry_id);
+
+			-- Speed up unread page
+			CREATE INDEX entries_user_status_published_idx ON entries(user_id, status, published_at);
+			CREATE INDEX entries_user_status_created_idx ON entries(user_id, status, created_at);
+			CREATE INDEX feeds_feed_id_hide_globally_idx ON feeds(id, hide_globally);
+
+			-- Speed up history page
+			CREATE INDEX entries_user_status_changed_published_idx ON entries(user_id, status, changed_at, published_at);
+		`
+		_, err = tx.Exec(sql)
+		return err
+	},
 }

+ 2 - 2
internal/storage/entry_query_builder.go

@@ -212,8 +212,8 @@ func (e *EntryQueryBuilder) WithOffset(offset int) *EntryQueryBuilder {
 }
 
 func (e *EntryQueryBuilder) WithGloballyVisible() *EntryQueryBuilder {
-	e.conditions = append(e.conditions, "not c.hide_globally")
-	e.conditions = append(e.conditions, "not f.hide_globally")
+	e.conditions = append(e.conditions, "c.hide_globally IS FALSE")
+	e.conditions = append(e.conditions, "f.hide_globally IS FALSE")
 	return e
 }