Here is my query: (it takes 0.01 sec) to be executed:
SELECT `pos_transactions`.`id`,
`psps`.`name` psp_or_club_name,
businesses.discount,
shop_name,
businesses.city_id,
`amount`,
`transaction_date`,
`psp_id` ,
`business_id`,
'pos' as `name`,
`daily_percentage`
FROM `pos_transactions`
JOIN `businesses`
ON `business_id` = `businesses`.`id`
JOIN `business_sub_categories`
ON `businesses`.`sub_category_id` = `business_sub_categories`.`id`
LEFT JOIN `psps`
ON `psp_id` = `psps`.`id`
UNION ALL
SELECT `club_transactions`.`id`,
`clubs`.`name_fa`,
psp_or_club_name,
businesses.discount,
shop_name,
businesses.city_id,
`amount`,
`transaction_date`,
`club_transactions`.`club_id` as `psp_id` ,
`business_id`,
'club' as `name`,
`daily_percentage`
FROM `club_transactions`
JOIN `businesses`
ON `business_id` = `businesses`.`id`
JOIN `business_sub_categories`
ON `businesses`.`sub_category_id` = `business_sub_categories`.`id`
LEFT JOIN `clubs`
ON `club_transactions`.`club_id` = `clubs`.`id`
where `club_transactions`.`status` = "paid"
I need to make a view of it and them call it in different places. So I create the view this way:
CREATE VIEW myview AS ( <query above> )
And then use it like this:
SELECT * FROM myview
but it takes 3 sec to be executed. Why really? And how can I optimize it?
And here is the result of EXPLAIN: