Forum: PC Hard- und Software Sqlite view mit json extract sehr langsam


von Andrew G. (Gast)


Lesenswert?

Kennt sich jemand mit json und sqlite aus? Ich habe eine Tabelle mit 
mehreren tausend Einträgen wo in einer Spalte noch ein json als varchar 
drinsteckt. In einem view wird ein wert daraus extrahiert und in einer 
extra Spalte angezeigt. Das view brauch mehrere Sekunden beim select aus 
dem view auch wenn ich limit 1 setze oder eine bestimmte ID selektiere. 
Ohne json geht das sehr schnell.

Es kommt mir fast vor als wird ein where ignoriert und erstmal alles 
extrahiert.

von DerEgon (Gast)


Lesenswert?

Welche sqlite-Version kennt json?

von Εrnst B. (ernst)


Lesenswert?

Andrew G. schrieb:
> Es kommt mir fast vor als wird ein where ignoriert und erstmal alles
> extrahiert.

Ein "EXPLAIN" vor der Query kann da für Klarheit sorgen.

https://www.sqlite.org/lang_explain.html
https://www.sqlite.org/eqp.html

: Bearbeitet durch User
von Ergo70 (Gast)


Lesenswert?

DerEgon schrieb:
> Welche sqlite-Version kennt json?

"The JSON functions and operators are built into SQLite by default, as 
of SQLite version 3.38.0 (2022-02-22). They can be omitted by adding the 
-DSQLITE_OMIT_JSON compile-time option. Prior to version 3.38.0, the 
JSON functions were an extension that would only be included in builds 
if the -DSQLITE_ENABLE_JSON1 compile-time option was included. In other 
words, the JSON functions went from being opt-in with SQLite version 
3.37.2 and earlier to opt-out with SQLite version 3.38.0 and later."

von DerEgon (Gast)


Lesenswert?

Ah. Das ist also noch recht frisch.

von Ergo70 (Gast)


Lesenswert?

Die Doku sagt, dass sqlite JSON mit 1 GB/s Parsen kann. Entweder ist das 
JSON also sehr groß, oder der Plan ist Mist. Oder es ist ein echter Bug.

von Dirk K. (merciless)


Lesenswert?

Andrew G. schrieb:
> Kennt sich jemand mit json und sqlite aus? Ich habe eine Tabelle mit
> mehreren tausend Einträgen wo in einer Spalte noch ein json als varchar
> drinsteckt. In einem view wird ein wert daraus extrahiert und in einer
> extra Spalte angezeigt. Das view brauch mehrere Sekunden beim select aus
> dem view auch wenn ich limit 1 setze oder eine bestimmte ID selektiere.
> Ohne json geht das sehr schnell.
>
> Es kommt mir fast vor als wird ein where ignoriert und erstmal alles
> extrahiert.

Und wenn du nicht aus dem View selektierst, sondern direkt aus der 
Tabelle?

von 50c (Gast)


Lesenswert?

Wie sieht den der View aus?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.