JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Performance on selecting all columns instead of specified attributes
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Ruby
- Sterne
- 2.3k
- Forks
- 546
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Is there a reason the _model_class queries all columns?
This is a huge performance impact on models with many columns that may not ever be used by the resource.
It seems for performance reasons it makes sense to only select the attributes defined in the JSONAPI::Resource class.
A workaround for now is to override each resource using .select to retrieve only the fields that are specifically defined.
attributes :name, :address
def self.records(_options = {})
super.select(self.fields)
end
This should also take into account sparse fieldsets parameters, which would further limit which columns are selected.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne in lib/jsonapi/active_relation_resource.rb bei der verknüpften _model_class-Abfrage und verfolge, wie Resource-Attribute und sparse fieldsets dargestellt werden. Die Arbeit ist abgeschlossen, wenn diese Abfragen nur die vom resource und vom angeforderten fieldset benötigten Felder auswählen, dabei das bestehende records-Verhalten erhalten bleibt und die relevanten Abfragepfade abgedeckt sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rails, ruby
- Bereich
- backend-api-design, databases, performance
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 38/100