wiki:MenuDrinkView

Version 3 (modified by 223235, 2 weeks ago) ( diff )

--

Преглед: v_menu_drink

Својство Вредност
Шема kbnteam
Категорија Мени и каталог
Поврзани индекси Примарни и уникатни клучеви

Опис

Ги прикажува пијалоците, нивната количина и цена, како и ресторанот.

Едноставно спојување на drink и restaurant, без агрегации.

Еден ред за секој пијалак. Менито не се ограничува според активноста на договорите.

Зависности

Табела / преглед Употреба
kbnteam.drink Пијалоци, количини, цени и ресторан.
kbnteam.restaurant Податоци за рестораните.

Излезни колони

Колона Извор / пресметка Опис
drink_id drink.drink_id Идентификатор на пијалакот.
drink_name drink.drink_name Назив на пијалакот.
drink_milliliters drink.drink_milliliters Количина во милилитри.
drink_price drink.drink_price Цена на пијалакот.
rest_id restaurant.rest_id Идентификатор на ресторанот.
rest_name restaurant.rest_name Назив на ресторанот.

SQL дефиниција

CREATE OR REPLACE VIEW kbnteam.v_menu_drink AS
SELECT
    d.drink_id,
    d.drink_name,
    d.drink_milliliters,
    d.drink_price,
    r.rest_id,
    r.rest_name
FROM kbnteam.drink d
JOIN kbnteam.restaurant r ON r.rest_id = d.rest_id;

Тестирање на перформанси

Примерите користат илустративни идентификатори и датуми. За споредливи мерења се избираат вредности што постојат во базата и се задржуваат истите податоци, филтри, услови за кеширање и број на повторувања. Статистиките за табелите треба да бидат ажурирани во двете состојби.

Тест прашалници

BEGIN READ ONLY;
SET LOCAL statement_timeout = '60s';

-- Тест 1: целосен преглед
EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
SELECT * FROM kbnteam.v_menu_drink;

-- Тест 2: по ресторан
EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
SELECT * FROM kbnteam.v_menu_drink
WHERE rest_id = 1;

ROLLBACK;

Резултати пред индексирање

Основната состојба ги задржува индексите на примарните клучеви и уникатните ограничувања. Останатите присутни индекси се евидентираат одделно. При споредба на заеднички индекси се користи истата почетна состојба за секој преглед.

Метрика Тест 1 (целосен преглед) Тест 2 (по ресторан)
Planning Time _ ms _ ms
Execution Time _ ms _ ms
Rows Returned _ _
Начин на читање по табела _ _
Shared Hit Blocks _ _
Shared Read Blocks _ _
-- Планови и резултати пред дополнителното индексирање:

Дополнителни и заеднички индекси

drink(rest_id, drink_name) е покриен со уникатното ограничување uq_drink_restaurant_name, а restaurant(rest_id) со примарен клуч. За овој преглед нема дополнителен индекс.

Нема дополнителна CREATE INDEX наредба за овој преглед. Двете мерења го користат истото основно покривање со индекси.

Проверка на индексите

SELECT tablename, indexname, indexdef
FROM pg_indexes
WHERE schemaname = 'kbnteam'
  AND tablename IN ('drink', 'restaurant')
ORDER BY tablename, indexname;

Резултати по индексирање

Мерењето ги користи истите тест прашалници и услови како почетното мерење.

Метрика Тест 1 (целосен преглед) Тест 2 (по ресторан)
Planning Time _ ms _ ms
Execution Time _ ms _ ms
Rows Returned _ _
Начин на читање по табела _ _
Shared Hit Blocks _ _
Shared Read Blocks _ _
-- Планови и резултати по дополнителното индексирање:

Анализа на подобрување

Метрика Пред По Промена (%)
Execution Time (Тест 1) _ ms _ ms _ %
Execution Time (Тест 2) _ ms _ ms _ %

Промената се пресметува како 100 × (време пред − време по) / време пред, кога почетното време е поголемо од нула. Негативна вредност означува побавно извршување.

Изборот меѓу секвенцијално читање, индексно читање и други планови зависи од обемот на податоците, селективноста на филтрите и статистиките. Индексите не гарантираат забрзување или отстранување на сортирањата и спојувањата. Плановите и времињата се утврдуваат со мерење.

Разлика во времињата кај непроменет сет индекси не е доказ за подобрување од нов индекс.

Note: See TracWiki for help on using the wiki.