== QueryOptimization == === Оптимизација === [attachment:"Индекси и оптимизација на прашалници.pdf"] '''Проект:''' WIMS * Андреј Арсовски 231170 * Мартина Ивановска 231014 * Мила Спасевска 231046 ---- == View 1: view_current_warehouse_stock == '''Опис:''' Shows current stock per warehouse, product, and/or variant. 1. Примарен филтер за погледот ''view_current_warehouse_stock'' ќе биде според ''warehouse_id'', а може да се филтрира и според ''product_id'' и ''variant_id''. 1. Ќе биде употребувано од страна на вработените кога сакаат да направат увид во состојбата на одреден warehouse, одреден продукт или конкретна варијанта. 1. Иницијално време за извршување на овој поглед за секој warehouse за секој продукт е доста долго околу 13 секунди поради тоа што е потребен full scan за сите редови во inventory. Но ова не може да се оптимизира поради неопходен seq scan. 1. Иницијално време за извршување: * По warehouse: 1.8 секунди (прифатливо) * По продукт: 2.8 секунди (прифатливо) * По варијанта: 0.3 секунди (прифатливо) 1. Во продолжение следуваат планови и времиња на извршување. [[Image(image28.png)]] ---- == View 2: view_products_by_category == '''Опис:''' Lists all products grouped by their categories. 1. Примарен филтер е ''main_category_id'', а може да се филтрира и според ''product_id''. 1. Ќе биде употребувано од страна на вработени или клиенти кога сакаат да разгледуваат продукти кои се дел од одбрана категорија. 1. Иницијално време за извршување е околу 350 ms. 1. Иницијално време за извршување: * По category_id: 1.8 секунди (прифатливо) * По product_id: 350 ms (прифатливо) 1. Во продолжение следуваат планови и времиња на извршување. ---- == View 3: view_variants_per_product == '''Опис:''' Shows all variants for each product with detailed variant information. 1. Примарен филтер е ''product_id''. 1. Ќе биде употребувано од страна на вработени или клиенти кога сакаат да разгледуваат конкретни варијанти од одреден тип на продукти. 1. Иницијално време за извршување е околу 400 ms. 1. Иницијално време за извршување по ''product_id'' е 430 ms (прифатливо). 1. Во продолжение следуваат планови и времиња на извршување. ---- == View 4: view_inventory_summary == '''Опис:''' View inventory stock for a given product_variant. 1. Примарен филтер е ''product_variant_id'' и ''available_quantity''. 1. Ќе биде употребувано од страна на вработените и менаџерите кога сакаат да проверат во колкава количина имаме одредена варијанта. 1. Иницијално време за извршување е околу 3 секунди. 1. Иницијално време за извршување: * По product_variant_id: 320 ms (прифатливо) * По available_quantity: 3.7 секунди (неприфатливо) 1. Во продолжение следуваат планови и времиња на извршување. ---- == View 5: view_employee_current_warehouse == '''Опис:''' Detailed warehouse where an employee is assigned or employees per warehouse. 1. Примарен филтер е ''employee_id'', а дополнително може да се филтрира по ''warehouse_id'' и ''employment_status''. 1. Ќе биде употребувано од страна на администратори кога сакаат да видат кои задачи ги има еден вработен или кои вработени работат во одреден warehouse. 1. Иницијално време за извршување е околу 400 ms. 1. Иницијално време за извршување: * По employee_id: 300 ms (прифатливо) * По warehouse_id: 350 ms (прифатливо) 1. Во продолжение следуваат планови и времиња на извршување. ---- == View 6: view_employee_permissions == '''Опис:''' Lists employee roles and their associated permissions. 1. Примарен филтер е ''employee_id''. 1. Ќе биде употребувано од страна на администратори кога сакаат да видат кои пермисии ги има даден вработен. 1. Иницијално време за извршување е околу 350 ms. 1. Иницијално време за извршување по ''employee_id'' е 300 ms (прифатливо). 1. Во продолжение следуваат планови и времиња на извршување. ---- == View 7: view_inventory_movements_detailed == '''Опис:''' Detailed inventory movement records including bins and responsible employee. 1. Примарен филтер е ''employee_id'', а дополнително може да се филтрира по: * transaction_type * created_at * inventory_transaction_id 1. Ќе биде употребувано од страна на администратори и warehouse менаџери за следење на движење на залихи. 1. Иницијално време за извршување без филтрирање е 3.2 секунди. 1. Иницијални времиња: * employee_id: 900 ms → 400 ms по индекс * transaction_type: 2.7 s (без значително подобрување) * created_at: 3.3 s → 1.7 s по индекс * inventory_transaction_id: 1 s → 300 ms по индекс 1. Во продолжение следуваат планови и времиња на извршување. === Пред индекс === (вметни слики / EXPLAIN планови) === После индекс === (вметни слики / EXPLAIN планови) ---- == View 8: view_variant_details == '''Опис:''' Detailed product variant view. 1. Примарен филтер е ''variant_id''. 1. Ќе биде употребувано од страна на вработени или клиенти кога сакаат да разгледуваат одредена продукт варијанта и сите детални податоци. 1. Иницијално време за извршување е околу 1 секунда. 1. Иницијално време за извршување по ''variant_id'' е 350 ms (прифатливо). 1. Во продолжение следуваат планови и времиња на извршување. ---- == View 9: view_category_tree == '''Опис:''' Category hierarchy. 1. Нема примарен филтер или може да се користи ''category_id'' за детална патека на категорија. 1. Ќе биде употребувано од страна на вработени или клиенти кога сакаат да ја разгледуваат хиерархијата на категориите. 1. Иницијално време за извршување е околу 330 ms. 1. Иницијално време за извршување по ''category_id'' е 350 ms (прифатливо). 1. Во продолжение следуваат планови и времиња на извршување.