рдирд╡реАрдирддрдо SQLite рдЕрдкрдбреЗрдЯ рдореЗрдВ, рдХреНрд╡реЗрд░реА рдкреНрд▓рд╛рдирд░ рдореЗрдВ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдЖрдП рд╣реИрдВ рдФрд░ рдЕрдм рдЗрд╕реЗ
рдиреЗрдХреНрд╕реНрдЯ рдЬрдирд░реЗрд╢рди рдХреНрд╡реЗрд░реА
рдкреНрд▓рд╛рдирд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕ рд╕рд╛рд▓ рдирдП рдкреНрд▓рд╛рдирд░ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг SQLite рдЕрдкрдбреЗрдЯреНрд╕ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрд╡рд▓реЛрдХрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЕрдЧрд▓реА рдкреАрдврд╝реА рдЕрдиреБрд░реЛрдз рд╢реЗрдбреНрдпреВрд▓рд░ (NGQP, рд╕рдВрд╕реНрдХрд░рдг 3.8.0 рдХреЗ рдмрд╛рдж рд╕реЗ)
рдЕрдиреБрд╕реВрдЪрдХ рдбреЗрдЯрд╛ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЬрд▓реНрджреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реИред SQLite рд╕рдВрд╕реНрдХрд░рдг 3.8.0 рдореЗрдВ, рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рддреЗрдЬреА рд╕реЗ рдФрд░ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрджрд┐ рдХрд┐рд╕реА рдХреНрд╡реЗрд░реА рдХреЛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрджрд┐ рдХреЛрдИ рдХреНрд╡реЗрд░реА рдХрдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рдЬрд╛рд░ рдФрд░ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдкреНрд▓рд╛рдирд░ рдХреЛ рдЕрдзреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рддрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рд╡рд┐рдХрд▓реНрдк рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
SQLite рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ (рдкреНрд▓рд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реВрдк рдпрджрд┐ рд╕реНрдерд┐рддрд┐ рдореЗрдВ OR рдпрд╛ IN рд╢рд╛рдорд┐рд▓ рд╣реИ)ред рдПрдХ рд▓реВрдк рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдкреВрд░реНрдг рдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд┐рдпреЛрдЬрди рдореЗрдВ рджреЛ рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ:
1) рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдЪрдХреНрд░ рдХрд╛ рдХреНрд░рдо рдЪреБрдиреЗрдВ;
2) рдкреНрд░рддреНрдпреЗрдХ рдЪрдХреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ;
рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп рджреВрд╕рд░реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЯреЗрдмрд▓ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдСрд░реНрдбрд░ рдЪреБрдирдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХрд╛ рдЪрдпрди, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреБрдЪреНрдЫ рд╣реИред
SQLite рдХреНрд╡реЗрд░реА рдкреНрд▓рд╛рдирд░ "рд╕реНрдерд┐рд░" рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдЙрд╕реА рдпреЛрдЬрдирд╛ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рдмрд╢рд░реНрддреЗ рдХрд┐:
1) рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ;
2) ANALYZE рдкрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
3) SQLITE_ENABLE_STAT3 рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ;
4) SQLite рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╢реНрди "рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ" рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ SQLite рдХреЗ рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдпреБрджреНрдз рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ "рдХрд╛рдо" рдХрд░реЗрдВрдЧреЗред "рдмрдбрд╝реЗ" рдбреЗрдЯрд╛рдмреЗрд╕, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд▓рдЧрд╛рддрд╛рд░ рд╕реВрдЪрдХрд╛рдВрдХ рдЖрдБрдХрдбрд╝реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
3.8.0 рд╕реЗ рдкрд╣рд▓реЗ SQLite рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рдереЗред рдРрд╕реЗ "рдореБрд╢реНрдХрд┐рд▓ рдорд╛рдорд▓реЗ" рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
рд▓реЗрди-рджреЗрди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд░реНрд╢рди рдкрд░рд┐рд╖рдж рд╕реЗ "рдЯреАрдкреАрд╕реА-рдПрдЪ рдХреНрдпреВ 8"ред рдЗрд╕ рдХреНрд╡реЗрд░реА рдореЗрдВ, 8 рддрд╛рд▓рд┐рдХрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рдЗрд╕ рдЖрд░реЗрдЦ рдореЗрдВ, рдПрдХ рд╡реГрддреНрдд рдХрд╛ рдЕрд░реНрде рд╣реИ FROM рдХреНрд╡реЗрд░реА рд╕реЗ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ред рдордВрдбрд▓рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдЪрд╛рдк рдкрд░, рдкреНрд░рддреНрдпреЗрдХ рдЪрдХреНрд░ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрдиреБрдорд╛рдирд┐рдд "рд▓рд╛рдЧрдд" рд▓рд┐рдЦреА рдЧрдИ рд╣реИ, рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рд╡рд╣ рдЪрдХреНрд░ рдЬрд╣рд╛рдВ рд╕реЗ рдЖрд░реНрдХ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдмрд╛рд╣рд░реА рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЪрдХреНрд░ рдПрд╕ рдХреЛ рдЪрдХреНрд░ рдПрд▓ рдореЗрдВ рдирд┐рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓рд╛рдЧрдд 2.30 рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рдЪрдХреНрд░ рдПрд▓ рдХреЛ рдПрд╕ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд▓рд╛рдЧрдд 9.17 рд╣реИред
"рд▓рд╛рдЧрдд" рд▓рдШреБрдЧрдгрдХ рд╣реИрдВ рдФрд░ рдЬрдм рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдЪрдХреНрд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдКрдкрд░ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрд▓ рдореЗрдВ рдПрдХ рдПрд╕ рдЪрдХреНрд░ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рд╕реЗ 6.87 рдХрд╛ рд▓рд╛рдн рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ рдПрд╕ рдореЗрдВ рдПрд▓ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдПрд╕ 963 рдЧреБрдгрд╛ рддреЗрдЬреА рд╕реЗ рдХреНрд╡реЗрд░реА рдПрд▓ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реИред
рддрд╛рд░рд╛рдВрдХрди рдХреЗ рд╕рд╛рде рд╡реГрддреНрдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЪрдХреНрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдХреАрдордд рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЧреНрд░рд╛рдл рджреНрд╡рд┐рджрд┐рд╢ рд╣реИ, рдФрд░ рдирд┐рдпреЛрдЬрди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдиреНрдпреВрдирддрдо рд▓рд╛рдЧрдд рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рд░реНрдЧ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдПрдХ рдмрд╛рд░ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдПред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдпрд╣ рд╡рд░реНрдгрди рдПрдХ рд╕рд░рд▓реАрдХрд░рдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ рд▓рд╛рдЧрдд рдЕрдиреБрдорд╛рди рд╣рдореЗрд╢рд╛ рдЕрдиреБрдорд╛рдирд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрдВрдХ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЗ рдХрдИ "рд╡реЗрдЯ" рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рд╢реБрд░реБрдЖрддреА" рд╡рдЬрди, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреНрд░рд╛рдл рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреНрд╡реЗрд░реА рдореЗрдВ ORDER BY рд╢рд╛рдорд┐рд▓ рд╣реИ, рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЙрд░реНрдЯрд┐рдВрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдФрд░ рдЗрд╕реА рддрд░рд╣ред рд▓реЗрдХрд┐рди рдЯреАрдкреАрд╕реА-рдПрдЪ рдХреНрдпреВ 8 рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрди рд╕рднреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдВрд╕реНрдХрд░рдг 3.8.0 рд╕реЗ рдкрд╣рд▓реЗ, SQLite рдиреЗ "рд╕рдореАрдкрд╡рд░реНрддреА рдкрдбрд╝реЛрд╕реА", "рдмреАрдПрд╕" рд╣реЗрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреНрд░рд╛рдл рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХрдо рд╕реЗ рдХрдо рд▓рд╛рдЧрдд рд╡рд╛рд▓реЗ рдЖрд░реНрдХ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдпрд╣ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЕрдлрд╕реЛрд╕, "TPC-H Q8" рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рдзрд┐ 36.92 рдХреА рд▓рд╛рдЧрдд рд╡рд╛рд▓реЗ R-N1-N2-SCOLP рдорд╛рд░реНрдЧ рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИред рдЗрд╕ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрд░ рдПрдХ рдмрд╛рд╣рд░реА рдЪрдХреНрд░ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрди 1 рдПрдореНрдмреЗрдбреЗрдб рд╣реИ, рдЖрджрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдорд╛рд░реНрдЧ PLOC-N1-RS-N2 рд╣реИред рдЗрд╕рдХреА рд▓рд╛рдЧрдд 27.38 рд╣реИ, рдЕрдВрддрд░ рдирдЧрдгреНрдп рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдпреЗ рд▓рдШреБрдЧрдгрдХреАрдп рдореВрд▓реНрдп рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдкреНрд░рджрд░реНрд╢рди 750 рдЧреБрдирд╛ рддреЗрдЬ рдЪрд▓рддрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕рднреА рдорд╛рд░реНрдЧреЛрдВ рдХреА рдкреВрд░реНрдг рдЧрдгрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреА рдЧрдгрдирд╛ рдХрд╛ рдХреНрд░рдо рдЪрдХреНрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рддрдереНрдп рдХреЗ рд╕рдорд╛рдиреБрдкрд╛рддреА рд╣реЛрддрд╛ рд╣реИред
рдирдпрд╛ рдирд┐рдпреЛрдЬрдХ рд╕реНрддрдВрдн рдореЗрдВ рдорд╛рд░реНрдЧ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдЕрдиреБрдорд╛рдирдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: "рдПрди рдирд┐рдХрдЯрддрдо рдкрдбрд╝реЛрд╕реАред" рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдиреНрдпреВрдирддрдо рд▓рд╛рдЧрдд рдХреЗ рд╕рд╛рде рдПрдХ рдкрдбрд╝реЛрд╕реА рдЪреБрдирдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрди рдкрде рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП N = 4. рддрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд░реНрд╡реЛрддреНрддрдо рдорд╛рд░реНрдЧреЛрдВ рдХреЛ TPC-H Q8 рдкрд░ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ:
рдЖрд░ (рд▓рд╛рдЧрдд: 3.56)
рдПрди 1 (рд▓рд╛рдЧрдд: 5.52)
рдПрди 2 (рд▓рд╛рдЧрдд: 5.52)
рдкреА (рд▓рд╛рдЧрдд: 7.71)
рдЕрдЧрд▓рд╛, рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдЧ рдХреЗ рд▓рд┐рдП, рдиреНрдпреВрдирддрдо рд▓рд╛рдЧрдд рдХреЗ рд╕рд╛рде рдЕрдЧрд▓рд╛ рдЪрд░рдг рдЪреБрдиреЗрдВ:
рдЖрд░-рдПрди 1 (рд▓рд╛рдЧрдд: 7.03)
рдЖрд░-рдПрди 2 (рд▓рд╛рдЧрдд: 9.08)
рдПрди 2-рдПрди 1 (рд▓рд╛рдЧрдд: 11.04)
рдЖрд░рдкреА (рд▓рд╛рдЧрдд: 11.27)
рддреАрд╕рд░рд╛ рдЪрд░рдг:
рдЖрд░-рдПрди 1-рдПрди 2 (рд▓рд╛рдЧрдд: 12.55)
рдЖрд░-рдПрди 1-рд╕реА (рд▓рд╛рдЧрдд: 13.43)
рдЖрд░-рдПрди 1-рдкреА (рд▓рд╛рдЧрдд: 14.74)
рдЖрд░-рдПрди 2-рдПрд╕ (рд▓рд╛рдЧрдд: 15.08)
рдЖрджрд┐ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ 8 рдЪрд░рдг рд╕рдВрднрд╡ рд╣реИрдВред K рдЪрдХреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╕рдордп O (K * N) рд╣реИ, рдЬреЛ O (2 ^ K) рд╕реЗ рджреВрд░ рд╣реИред
рд▓реЗрдХрд┐рди N рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдореВрд▓реНрдп рдХреНрдпрд╛ рд╣реИ? рд╢рд╛рдпрдж рдПрди = рдХреЗ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, "N рдирд┐рдпрд░ рдиреЗрдмрд░реНрд╕" N = 10. рдХреЗ рд▓рд┐рдП TPC-H Q8 рдХрд╛ рдЗрд╖реНрдЯрддрдо рд╕рдВрд╕реНрдХрд░рдг рдкрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдирд┐рдореНрди рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ SQLite рдореЗрдВ рд╕рд┐рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рд░рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП N = 1, рджреЛ рдЪрдХреНрд░реЛрдВ рд╕реЗ N = 5 рдХреЗ рд▓рд┐рдП рдФрд░ N = 10 рдХреЗ рд▓рд┐рдПред рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдЪрдХреНрд░реЛрдВ рд╡рд╛рд▓реЗ рд╕рднреА рдкреНрд░рд╢реНрдиред рд╢рд╛рдпрдж рдпреЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдВрдЧреЗред
SQLite 3.8.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп, рдХреБрдЫ рдкреНрд░рд╢реНрди рдзреАрд░реЗ-рдзреАрд░реЗ рдЪрд▓рдирд╛ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреВрд░рд╛ ANZYZE!рдирдП рдЕрдиреБрд╕реВрдЪрдХ рдХреЛ рджреГрдврд╝рддрд╛ рд╕реЗ рдЖрдБрдХрдбрд╝реЛрдВ рд╕реЗ рдмрд╛рдВрдзрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЖрдВрд╢рд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ (рдЖрдВрд╢рд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ, рд╕рдВрд╕реНрдХрд░рдг 3.8.0 рдХреЗ рдмрд╛рдж рд╕реЗ)
рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЖрдкрдХреЛ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реЗ рдХреБрдЫ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд░реНрдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ "рдХреНрд▓рд╛рд╕рд┐рдХ" рддрд░реАрдХрд╛:
CREATE INDEX po_parent ON purchaseorder(parent_po) WHERE parent_po IS NOT NULL;
рдХреЗрд╡рд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЦрд╛рд▓реА
рдкреИрд░реЗрдВрдЯ_рдкреЛ рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ
po_parent рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЦрд╛рд▓реА
parent_po рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХрдИ рд░рд┐рдХреЙрд░реНрдб рд╣реИрдВ, рддреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрд╕рд╛рдзрди рдмрдЪрдд рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдпреЗ рд░рд┐рдХреЙрд░реНрдб рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреЗрдЪреАрджрд╛ рддрд░реАрдХрд╛ред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд▓реЛрдЧ рдЯреАрдореЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЯреАрдо рдореЗрдВ рдПрдХ рдиреЗрддрд╛ рдЯреАрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
CREATE TABLE person( person_id INTEGER PRIMARY KEY, team_id INTEGER REFERENCES team, is_team_leader BOOLEAN,
рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдХреИрд╕реЗ рджреЗрдВ рдХрд┐ рдПрдХ рдЯреАрдо рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдиреЗрддрд╛ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ?
рдЯреАрдо рджреНрд╡рд╛рд░рд╛
рдХреЗрд╡рд▓ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ
рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ
(team_id, is_team_leader) ред рдЪреВрдВрдХрд┐ рд╡рд╣ рдХрдИ "рдЧреИрд░-рдиреЗрддрд╛рдУрдВ" рдХреЛ рдЯреАрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред рд╕рдорд╛рдзрд╛рди рдПрдХ рдЖрдВрд╢рд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:
CREATE UNIQUE INDEX team_leader ON person(team_id) WHERE is_team_leader;
рдпрд╣ рдЗрдВрдбреЗрдХреНрд╕ рдЯреАрдо рд▓реАрдбрд░ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдЧрд╛:
SELECT person_id FROM person WHERE is_team_leader AND team_id=?1;
рдФрд░ рд╕рд╛рде рд╣реА рдпрд╣ рдЯреАрдо рдореЗрдВ рджреВрд╕рд░реЗ рдиреЗрддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред
SQLite рдПрдХ "рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг" рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреЙрд▓ рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА "рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛" рдХреЛ рдЕрдкрдиреА рд░реАрдбрд┐рдВрдЧ рдлрд╛рдЗрд▓реЛрдВ, рддрд╛рд▓реЛрдВ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдЫреБрдкрд╛рддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 3.7.17 рд╕реЗ рдкрд╣рд▓реЗ, рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдиреЗ
рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ
xRead () рдФрд░
xWrite () рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рдпреЗ рдХреЙрд▓ рдЖрдорддреМрд░ рдкрд░ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдореЗрдВ "рдлрд╛рдЗрд▓ рд╕реЗ рд░реАрдб" рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ "рд░рд╛рдЗрдЯ рдЯреВ рдлрд╛рдЗрд▓" рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред 3.7.17 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, SQLite рдирд┐рдпрдорд┐рдд I / O (рдирдП рдХреЙрд▓:
xFetch () рдФрд░
xUnfetch ()) рдХреЗ рдмрдЬрд╛рдп рдореЗрдореЛрд░реА-рдореИрдкреНрдб I / O рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ SQLte рдПрдХ рдмрдлрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдкреЗрдЬ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ рд╣рдореЗрд╢рд╛ рдореЗрдореЛрд░реА рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрдореЛрд░реА рдореИрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, SQLite рдПрдХ рдореЗрдореЛрд░реА рд▓реЛрдХреЗрд╢рди рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдкрд╣рд▓реЗ рд╣реА рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рдЪреБрдХреА рд╣реИ, рддреЛ рдирдХрд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ (
146,200 % рддрдХ)ред рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдФрд░ SQLite рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдХреЛ рднреА рдмрдЪрд╛рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреЗ рдиреБрдХрд╕рд╛рди рднреА рд╣реИрдВред рдмрдлрд╝рд░ рдУрд╡рд░рдлрд╝реНрд▓реЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рддреБрд░рдВрдд рдмрд░реНрдмрд╛рдж рдХрд░ рджреЗрдВрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рд╕реНрдХ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рддреБрд░рдВрдд рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рдмрд╕реЗ рджреБрдЦрдж рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдмреБрд░реА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдирдП рд╕реНрдХреАрдорд╛ рдореЗрдВ I / O рддреНрд░реБрдЯрд┐ SQLite рджреНрд╡рд╛рд░рд╛ "рдкрдХрдбрд╝реА рдЧрдИ" рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ (рд╡рд┐рдВрдбреЛрдЬ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЬреНрдЮрд╛рдд рд╣реИ - рд╢рд╛рдпрдж рдХреЛрдИ рдЗрд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦ рджреЗрдЧрд╛)ред
рд╕рд╛рде рд╣реА, рдХреБрдЫ рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛рдУрдВ рдкрд░, рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рднреА рд╕рдВрднрд╡ рд╣реИред
рдореИрдк рдХрд┐рдП рдЧрдП I / O рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
PRAGMA mmap_size=268435456;
рдорд╛рди рдкреНрд░рддрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдореЛрд░реА рдмрдлрд░ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЕрдХреНрд╖рдо:
PRAGMA mmap_size=0;
рдпрд╣ рд╕рдм рдЦрдмрд░ рд╣реИред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдореАрдХреНрд╖рд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред рд╡рд┐рд╕реНрддреГрдд SQLite рд░рд┐рд▓реАрдЬрд╝ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ
рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред
рдкреБрдирд╢реНрдЪред SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ
рдЖрдзреБрдирд┐рдХ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред