Что лучший способ состоит в том, чтобы управлять полномочиями для веб-приложения - битовая маска или таблица базы данных?

Существует несколько факторов, играющих большую роль в решении PostgreSQL о том, как выполнять count(), но, во-первых, столбец, который вы используете внутри функции count, не имеет значения. На самом деле, если вам не нужен счет DISTINCT, придерживайтесь count(*).

Вы можете попробовать следующее, чтобы запустить сканирование только по индексу:

SELECT count(*) FROM (SELECT event_id FROM events) t;

... если это все еще приводит к последовательному сканированию, то, скорее всего, индекс не намного меньше, чем сама таблица , Чтобы по-прежнему видеть, как будет выполняться сканирование только по индексу, вы можете применить его с помощью:

SELECT count(*) FROM (SELECT event_id FROM events ORDER BY 1) t;

ЕСЛИ это не намного быстрее, вам также следует рассмотреть возможность обновления PostgreSQL до версии не ниже 9.6, которая вводит параллельных последовательных сканирований , чтобы ускорить эти вещи.

Кроме того, вы можете добиться значительного ускорения, выбирая из множества методов, чтобы обеспечить счет, который в значительной степени зависит от вашего варианта использования и ваших требований:

И последнее, но не менее важное: всегда предоставляйте вывод расширенного объяснения в виде уже рекомендованного @a_horse_with_no_name, например:

EXPLAIN (ANALYZE, BUFFERS) SELECT count(event_id) FROM events;

51
задан Hari 13 October 2008 в 11:27
поделиться

1 ответ

Вы можете использовать Active Directory или другую реализацию LDAP, если вы находитесь в управляемой среде. Таким образом, группы безопасности, которые определяют разрешения, могут управляться поддержкой первой линии, используя технологию, с которой они, скорее всего, уже знакомы. что в вашем приложении может быть расширяемая модель данных.

3
ответ дан 7 November 2019 в 09:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: