Hi. I have an query with 3 and it takes 1 min 4.60 sec. Table has 13000 rows and i don't know what to optimise it
explain select count(1) as cate from users join user_groups on users.id = user_groups.user_id join groups on user_groups.group_id = groups.id join payment on groups.payment_id = payment.id where user_registered between concat(date(now() - interval '7' day), ' 00:00:00') and now() and payment.expiration_date > payment.payment_date + interval '10' day;
+----+-------------+-------------+--------+-------------------------+-----------------+---------+--------------------------------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+--------+-------------------------+-----------------+---------+--------------------------------------+------+-------------+
| 1 | SIMPLE | users | range | PRIMARY,user_registered | user_registered | 5 | NULL | 635 | Using where |
| 1 | SIMPLE | user_groups | ref | user_id,group_id | user_id | 4 | transfer_ro_pre.users.id | 12 | |
| 1 | SIMPLE | groups | eq_ref | PRIMARY,payment_id | PRIMARY | 4 | transfer_ro_pre.user_groups.group_id | 1 | |
| 1 | SIMPLE | payment | eq_ref | PRIMARY | PRIMARY | 4 | transfer_ro_pre.groups.payment_id | 1 | Using where |
+----+-------------+-------------+--------+-------------------------+-----------------+---------+--------------------------------------+------+-------------+
4 rows in set (0.00 sec)
explain select count(1) as cate from users join user_groups on users.id = user_groups.user_id join groups on user_groups.group_id = groups.id join payment on groups.payment_id = payment.id where user_registered between concat(date(now() - interval '7' day), ' 00:00:00') and now() and payment.expiration_date > payment.payment_date + interval '10' day;
+----+-------------+-------------+--------+-------------------------+-----------------+---------+--------------------------------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+--------+-------------------------+-----------------+---------+--------------------------------------+------+-------------+
| 1 | SIMPLE | users | range | PRIMARY,user_registered | user_registered | 5 | NULL | 635 | Using where |
| 1 | SIMPLE | user_groups | ref | user_id,group_id | user_id | 4 | transfer_ro_pre.users.id | 12 | |
| 1 | SIMPLE | groups | eq_ref | PRIMARY,payment_id | PRIMARY | 4 | transfer_ro_pre.user_groups.group_id | 1 | |
| 1 | SIMPLE | payment | eq_ref | PRIMARY | PRIMARY | 4 | transfer_ro_pre.groups.payment_id | 1 | Using where |
+----+-------------+-------------+--------+-------------------------+-----------------+---------+--------------------------------------+------+-------------+
4 rows in set (0.00 sec)