ΠΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° SQLite 3.35, Π»Π΅ΠΊΠ° Π‘Π£ΠΠ, ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ρ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, Π±Π΅ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π°. ΠΠΎΠ΄ΡΡ Π½Π° SQLite ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Ρ.Π΅. ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎ Π·Π° Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅Π»ΠΈ. Π€ΠΈΠ½Π°Π½ΡΠΎΠ²Π°ΡΠ° ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° SQLite ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΎΡ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΊΠΎΠ½ΡΠΎΡΡΠΈΡΠΌ, ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΊΠ°ΡΠΎ Adobe, Oracle, Mozilla, Bentley ΠΈ Bloomberg.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (log2(), cos(), tg(), exp(), ln(), pow() ΠΈ Π΄Ρ.), ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² SQL. ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Ρ ΠΎΠΏΡΠΈΡΡΠ° "-DSQLITE_ENABLE_MATH_FUNCTIONS".
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·ΡΠ°Π·Π° βALTER TABLE DROP COLUMNβ Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ° ΠΈ ΠΈΠ·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π² Π΄Π°Π΄Π΅Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π°.
- ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° UPSERT (Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΡΠ½Π°) Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ ΡΡΠ΅Π· ΠΈΠ·ΡΠ°Π·ΠΈ ΠΊΠ°ΡΠΎ βINSERT ... ON CONFLICT DO NOTHING/UPDATEβ Π΄Π° ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠ° ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ Π²ΠΌΡΠΊΠ²Π°Π½Π΅, Π°ΠΊΠΎ Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ Π΄Π°Π½Π½ΠΈ ΡΡΠ΅Π· βINSERTβ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π·Π°ΠΏΠΈΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ UPDATE Π²ΠΌΠ΅ΡΡΠΎ INSERT). ΠΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ON CONFLICT, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΠΏΠΎ ΡΠ΅Π΄. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ Π±Π»ΠΎΠΊ "ON CONFLICT" ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΏΡΡΠ½Π°Ρ, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° "DO UPDATE".
- ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ DELETE, INSERT ΠΈ UPDATE ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΈΠ·ΡΠ°Π·Π° RETURNING, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΡΡΠΈΡ, Π²ΠΌΡΠΊΠ½Π°Ρ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½ Π·Π°ΠΏΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΡΠ°Π·ΡΡ βΠ²ΠΌΡΠΊΠ²Π°Π½Π΅ Π² ... Π²ΡΡΡΠ°Ρ ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡβ ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈΡ ΡΠ΅Π΄, Π° βΠ°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ... Π·Π°Π΄Π°Π΄Π΅Π½Π° ΡΠ΅Π½Π° = ΡΠ΅Π½Π° * 1.10 Π²ΡΡΡΠ°ΡΠ° ΡΠ΅Π½Π°β ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΡΠ΅Π½Π°ΡΠ°.
- ΠΠ° ΠΎΠ±ΡΠΈ ΡΠ°Π±Π»ΠΈΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ (CTE), ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° WITH, Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ ΠΈΠ·Π±ΠΎΡΡΡ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠΈ βΠΠΠ’ΠΠ ΠΠΠΠΠΠΠ ΠΠβ ΠΈ βΠΠΠΠΠ’ΠΠ ΠΠΠΠΠΠΠ ΠΠβ. βΠΠΠ’ΠΠ ΠΠΠΠΠΠΠ ΠΠβ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°, ΠΏΠΎΡΠΎΡΠ΅Π½Π° Π² ΠΈΠ·Π³Π»Π΅Π΄Π°, Π² ΠΎΡΠ΄Π΅Π»Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠ° ΡΠ°Π±Π»ΠΈΡΠ° ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ°Π·ΠΈ ΡΠ°Π±Π»ΠΈΡΠ°, Π° Ρ βΠΠΠΠΠ’ΠΠ ΠΠΠΠΠΠΠ ΠΠβ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ ΠΏΡΠΈ Π²ΡΠ΅ΠΊΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π°. SQLite ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° βNOT MATERIALIZEDβ, Π½ΠΎ ΡΠ΅Π³Π° Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ Π½Π° βMATERIALIZEDβ Π·Π° CTE, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π²Π΅Π΄Π½ΡΠΆ.
- ΠΠ°ΠΌΠ°Π»Π΅Π½Π° ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ VACUUM Π²ΡΡΡ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ TEXT ΠΈΠ»ΠΈ BLOB ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ.
- ΠΠ·Π²ΡΡΡΠ΅Π½Π° Π΅ ΡΠ°Π±ΠΎΡΠ° Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° ΠΈ ΠΏΠ»Π°Π½Π΅ΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ:
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ min ΠΈ max Ρ ΠΈΠ·ΡΠ°Π·Π° "IN".
- ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° EXISTS Π΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΎ.
- ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΎ ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ UNION ALL ΠΈΠ·ΡΠ°Π·ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΊΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ JOIN.
- ΠΠ½Π΄Π΅ΠΊΡΡΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·ΡΠ°Π·ΠΈ IS NOT NULL.
- ΠΠ°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ "x IS NULL" ΠΈ "x IS NOT NULL" ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ Π² FALSE ΠΈΠ»ΠΈ TRUE Π·Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ Π°ΡΡΠΈΠ±ΡΡΠ° "NOT NULL".
- ΠΡΠΎΠΏΡΡΠ½Π΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π² UPDATE, Π°ΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π½Π΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π²ΡΠ½ΡΠ½ΠΈΡ ΠΊΠ»ΡΡ.
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Ρ ΡΠ°ΡΡΠΈ ΠΎΡ Π±Π»ΠΎΠΊ WHERE Π² ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΈΠ³Π° ΡΠ΅Π·ΠΈ ΡΠ°ΡΡΠΈ Π΄Π° ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ Π΄ΠΎ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ ΠΈ ΠΊΠΎΠΏΠΈΡ Π½Π° ΠΈΠ·ΡΠ°Π·ΠΈ ΠΎΡ PARTITION BY Π±Π»ΠΎΠΊΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π²ΡΠ² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
- ΠΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ".filectrl data_version".
- ΠΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ ".once" ΠΈ ".output" Π²Π΅ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄ ΠΊΡΠΌ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡ, ΠΈΠ·Π²ΠΈΠΊΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π½Π΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ ("|").
- ΠΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ βstmtβ ΠΈ βvmstepβ ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΊΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° β.statsβ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΈΠ·ΡΠ°Π·ΠΈ ΠΈ Π±ΡΠΎΡΡΠΈ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru