Вы можете использовать этот плагин для предварительной выборки CSS-файлов: https://github.com/MarvelSQ/html-prefetch-css-webpack-plugin
или
[116 ] вы можете использовать style-loader , чтобы интегрировать css в файл js, а затем предварительно извлечь файл js, используя магический комментарий webpackPrefetch
:
import(/* webpackPrefetch: true */ "...")
Есть три способа получить такой счет, каждый со своими компромиссами.
Если вам нужен истинный счет, вы должны выполнить оператор SELECT, аналогичный тому, который вы использовали для каждой таблицы. Это связано с тем, что PostgreSQL хранит информацию о видимости строки в самой строке, а не где-либо еще, поэтому любой точный счет может относиться только к некоторой транзакции. Вы получаете подсчет того, что эта транзакция видит в тот момент, когда она выполняется. Вы можете автоматизировать это, чтобы работать с каждой таблицей в базе данных, но вам, вероятно, не нужен такой уровень точности или вы хотите ждать так долго.
Второй подход отмечает, что сборщик статистики примерно отслеживает, сколько строк является «активным» (не удаленным или устаревшим при более поздних обновлениях) в любое время. Это значение может немного снижаться при высокой активности, но в целом это хорошая оценка:
SELECT schemaname,relname,n_live_tup
FROM pg_stat_user_tables
ORDER BY n_live_tup DESC;
Это также может показать вам, сколько строк не работает, что само по себе является интересным числом для отслеживания.
Третий способ - отметить, что системная команда ANALYZE, которая регулярно выполняется процессом автоочистки, начиная с PostgreSQL 8.3 для обновления статистики таблицы, также вычисляет оценку строки. Вы можете получить его так:
SELECT
nspname AS schemaname,relname,reltuples
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE
nspname NOT IN ('pg_catalog', 'information_schema') AND
relkind='r'
ORDER BY reltuples DESC;
Трудно сказать, какой из этих запросов лучше использовать. Обычно я принимаю это решение в зависимости от того, есть ли еще полезная информация, которую я хочу использовать внутри pg_class или внутри pg_stat_user_tables. Для основных целей подсчета, просто чтобы увидеть, насколько большие вещи в целом, любой должен быть достаточно точным.
Я хотел общее количество от всех таблиц + список таблиц с их количествами. Немного как диаграмма работы того, где большая часть времени была проведена
WITH results AS (
SELECT nspname AS schemaname,relname,reltuples
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE
nspname NOT IN ('pg_catalog', 'information_schema') AND
relkind='r'
GROUP BY schemaname, relname, reltuples
)
SELECT * FROM results
UNION
SELECT 'all' AS schemaname, 'all' AS relname, SUM(reltuples) AS "reltuples" FROM results
ORDER BY reltuples DESC
, Вы могли, конечно, поместить LIMIT
пункт на результатах в этой версии также так, чтобы Вы получили самое большое n
преступники, а также общее количество.
Одна вещь, которая должна быть отмечена об этом, состоит в том, что необходимо позволить ему находиться некоторое время после группового импорта. Я протестировал это, просто добавив 5 000 строк к базе данных через несколько таблиц с помощью реальных данных импорта. Это показало 1 800 записей приблизительно в течение минуты (вероятно, настраиваемое окно)
, Это базируется от https://работа stackoverflow.com/a/2611745/1548557, так спасибо и распознавание к этому, чтобы запрос использовал в CTE
Если вы не возражаете против потенциально устаревших данных, вы можете получить доступ к той же статистике, которая используется оптимизатором запросов .
Примерно так:
SELECT relname, n_tup_ins - n_tup_del as rowcount FROM pg_stat_all_tables;
Я не помню URL, откуда я это взял. Но надеюсь, что это поможет вам:
CREATE TYPE table_count AS (table_name TEXT, num_rows INTEGER);
CREATE OR REPLACE FUNCTION count_em_all () RETURNS SETOF table_count AS '
DECLARE
the_count RECORD;
t_name RECORD;
r table_count%ROWTYPE;
BEGIN
FOR t_name IN
SELECT
c.relname
FROM
pg_catalog.pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE
c.relkind = ''r''
AND n.nspname = ''public''
ORDER BY 1
LOOP
FOR the_count IN EXECUTE ''SELECT COUNT(*) AS "count" FROM '' || t_name.relname
LOOP
END LOOP;
r.table_name := t_name.relname;
r.num_rows := the_count.count;
RETURN NEXT r;
END LOOP;
RETURN;
END;
' LANGUAGE plpgsql;
Выполнение select count_em_all ();
должно привести к подсчету строк во всех ваших таблицах.