| Version 2 (modified by , 2 weeks ago) ( diff ) |
|---|
Индекси: v_menu_meal_index
| Својство | Вредност |
|---|---|
| Шема | kbnteam
|
| Област | Мени и каталог |
| Главен преглед | v_menu_meal |
Опис
Индексите го поддржуваат пристапот до податоците за мени и каталог. Се поставуваат врз изворните табели и можат да се користат од повеќе прегледи.
Уникатното ограничување uq_meal_restaurant_name веќе го покрива пребарувањето по ресторан. Обратниот редослед на колоните во индексите за состојки и алергени овозможува пристап од јадење кон состојка и од состојка кон алерген.
DDL
CREATE INDEX IF NOT EXISTS idx_meal_cat_id_meal_id ON kbnteam.meal (cat_id, meal_id); CREATE INDEX IF NOT EXISTS idx_meal_ingredient_meal_id_ingr_id ON kbnteam.meal_ingredient (meal_id, ingr_id); CREATE INDEX IF NOT EXISTS idx_alergen_ingredient_ingr_id_alergen_id ON kbnteam.alergen_ingredient (ingr_id, alergen_id);
Поддржани прегледи
| Индекс | Прегледи | Намена |
|---|---|---|
idx_meal_cat_id_meal_id | v_menu_meal | Пребарување јадења по категорија. |
idx_meal_ingredient_meal_id_ingr_id | v_menu_meal | Пристап до состојките на јадењето и групирање по meal_id. |
idx_alergen_ingredient_ingr_id_alergen_id | v_menu_meal | Пристап до алергените поврзани со состојката. |
Колонски план
| Индекс | Табела | Прва колона | Следни колони | Намена |
|---|---|---|---|---|
idx_meal_cat_id_meal_id | meal | cat_id | meal_id | Пребарување јадења по категорија. |
idx_meal_ingredient_meal_id_ingr_id | meal_ingredient | meal_id | ingr_id | Пристап до состојките на јадењето и групирање по meal_id. |
idx_alergen_ingredient_ingr_id_alergen_id | alergen_ingredient | ingr_id | alergen_id | Пристап до алергените поврзани со состојката. |
Првата колона го определува вообичаениот почеток на пребарувањето со составен индекс. Присуството на други колони не значи дека индексот ги содржи сите податоци потребни за прегледот.
Верификација
SELECT tablename, indexname, indexdef
FROM pg_indexes
WHERE schemaname = 'kbnteam'
AND indexname IN (
'idx_meal_cat_id_meal_id',
'idx_meal_ingredient_meal_id_ingr_id',
'idx_alergen_ingredient_ingr_id_alergen_id'
)
ORDER BY tablename, indexname;
Проверката ги прикажува имињата и дефинициите. IF NOT EXISTS спречува повторно креирање под исто име, но не проверува дали постојната дефиниција е еднаква на наведената.
Влијание врз перформансите
Изборот меѓу секвенцијално читање, индексно читање и други планови зависи од обемот на податоците, селективноста на филтрите и статистиките. Индексите не гарантираат забрзување или отстранување на сортирањата и спојувањата. Плановите и времињата се утврдуваат со мерење.
Тестирање на перформанси
Тест прашалниците за овој преглед се наведени во v_menu_meal.
Резултати пред индексирање
| Прашалник | Execution Time (ms) | План / забелешки |
|---|---|---|
| Тест 1: по категорија | _ | _ |
| Тест 2: по ресторан | _ | _ |
Резултати по индексирање
| Прашалник | Execution Time (ms) | План / забелешки |
|---|---|---|
| Тест 1: по категорија | _ | _ |
| Тест 2: по ресторан | _ | _ |
