= Оптимизација на прашалници === `Performer_Events` {{{ CREATE VIEW "Performer_Events" AS SELECT p.performer_id, p.name AS performer_name, e.event_id, e.name AS event_name, eh.event_time FROM "Performer" p JOIN "Event_Happening_Performer" ehp ON p.performer_id = ehp.performer_id JOIN "Event_Happening" eh ON ehp.event_happening_id = eh.event_happening_id JOIN "Event" e ON eh.event_id = e.event_id; }}} ==== Без индекс: {{{ EXPLAIN ANALYZE SELECT * FROM "Performer_Events"; }}} [attachment:Performer_Events.csv] === `Venue_Layout` {{{ CREATE VIEW "Venue_Layout" AS SELECT v.venue_id, v.name AS venue_name, s.section_id, s.name AS section_name, st.seat_id, st.seat_number FROM "Venue" v JOIN "Section" s ON v.venue_id = s.venue_id JOIN "Seat" st ON s.section_id = st.section_id; }}} ==== Без индекс: {{{ EXPLAIN ANALYZE SELECT * FROM "Venue_Layout"; }}} === `User_Tickets` {{{ CREATE VIEW "User_Tickets" AS SELECT u.user_id, u.username, t.ticket_id, tp.purchase_id, tp.qr_code, tr.refund_id, tr.refund_time FROM "User" u JOIN "Ticket_Purchase" tp ON u.user_id = tp.user_id JOIN "Ticket" t ON tp.ticket_id = t.ticket_id LEFT JOIN "Ticket_Refund" tr ON tp.purchase_id = tr.purchase_id; }}} ==== Без индекс: {{{ EXPLAIN ANALYZE SELECT * FROM "User_Tickets"; }}} === `Event_User_Ratings` {{{ CREATE VIEW "Event_User_Ratings" AS SELECT eh.event_happening_id, e.event_id, e.name AS event_name, u.user_id, u.username, ehr.rating_id, ehr.rating, ehr.comment FROM "Event" e JOIN "Event_Happening" eh ON e.event_id = eh.event_id JOIN "Event_Happening_Rating" ehr ON eh.event_happening_id = ehr.event_happening_id JOIN "User" u ON ehr.user_id = u.user_id; }}} ==== Без индекс: {{{ EXPLAIN ANALYZE SELECT * FROM "Event_User_Ratings"; }}} === `Event_Overall_Ratings` {{{ CREATE VIEW "Event_Overall_Ratings" AS SELECT e.event_id, e.name AS event_name, eh.event_happening_id, eh.event_time, COUNT(ehr.rating_id) AS total_reviews, AVG(ehr.rating) AS average_rating FROM "Event" e JOIN "Event_Happening" eh ON e.event_id = eh.event_id JOIN "Event_Happening_Rating" ehr ON eh.event_happening_id = ehr.event_happening_id GROUP BY e.event_id, e.name, eh.event_happening_id, eh.event_time; }}} ==== Без индекс: {{{ EXPLAIN ANALYZE SELECT * FROM "Event_Overall_Ratings"; }}} === `Event_Financial_Summary` {{{ CREATE VIEW "Event_Financial_Summary" AS SELECT e.event_id, e.name AS event_name, eh.event_happening_id, eh.event_time, COUNT(tp.purchase_id) AS total_tickets_sold, -- total revenue SUM(tp.purchase_amount) - SUM(CASE WHEN tr.refund_amount IS NOT NULL THEN tr.refund_amount ELSE 0 END) AS net_revenue, -- refund taxes SUM(CASE WHEN tr.refund_id IS NOT NULL THEN tp.purchase_amount - tr.refund_amount ELSE 0 END) AS refund_tax_profit FROM "Event" e JOIN "Event_Happening" eh ON e.event_id = eh.event_id JOIN "Ticket" t ON eh.event_happening_id = t.event_happening_id JOIN "Ticket_Purchase" tp ON t.ticket_id = tp.ticket_id LEFT JOIN "Ticket_Refund" tr ON tp.purchase_id = tr.purchase_id GROUP BY e.event_id, e.name, eh.event_happening_id, eh.event_time; }}} ==== Без индекс: {{{ EXPLAIN ANALYZE SELECT * FROM "Event_Financial_Summary"; }}}