sqlite3 просмотры влияют на производительность? - PullRequest
8 голосов
/ 14 февраля 2012

Попытка лучше понять базы данных в целом и sqlite3 в частности:

Являются ли представления в sqlite3 в основном организационной функцией, позволяющей разбивать сложные запросы на ряд более мелких;или представления действительно влияют на производительность запросов, которые их используют?

Я заметил, что представления хранятся в самой базе данных как часть схемы.Сохраняются ли представления на диске и обновляются динамически по мере обновления зависимых таблиц;или они оцениваются по требованию?

Спасибо.

1 Ответ

12 голосов
/ 14 февраля 2012

Представления всегда будут выполняться по требованию (sqlite3 или иным образом), поэтому возвращаемые результаты никогда не сохраняются постоянно.

Что касается производительности, хотя я не могу говорить конкретно с sqlite3, обычно использование представлений будет иметь немного меньше накладных расходов, так как анализатор / планировщик запросов не должен повторно анализировать необработанный sql при каждом выполнении. Он может проанализировать его один раз, сохранить свою стратегию выполнения и затем использовать ее каждый раз, когда запрос фактически выполняется.

Увеличение производительности, которое вы видите при этом, как правило, будет небольшим, по большому счету. Это действительно помогает, только если это быстрый запрос, который вы часто выполняете. Если это медленный запрос, который вы выполняете нечасто, накладные расходы, связанные с анализом запроса, незначительны. Представления, конечно, обеспечивают хороший уровень организации.

...