Mutliple MySQL查询需要大量时间来加载页面

时间:2019-05-31 10:22:07

标签: php mysql database

我有11个表,这些表将结果从一张包含50列表的页面中获取。由于我获取结果的方式(每行大约11个查询,300-500个结果表示300x11个查询),因此需要花费一生的时间来加载整个页面。无法避免某些查询,因为我需要循环查询以获取每行的单个结果。

我首先运行查询以获取所有可用的活动用户,然后对每个查询运行所有这些查询以获取所需的额外信息。在下面的查询中,我基本上会获取3个表格的日期和城市名称。

一些查询:

SELECT DATE_FORMAT(event_date, '%d/%m/%Y - %H:%i') AS eventdate, event_id FROM `events` WHERE event_userid = $user_id AND event_group = 1 AND (event_type = 4 OR event_type = 5)

SELECT DATE_FORMAT(log_date, '%d/%m/%Y - %H:%i') AS logdate FROM `history` WHERE log_email = $user_email AND log_place = 1 AND log_status = 1 ORDER BY log_date DESC LIMIT 1

SELECT DATE_FORMAT(link_date, '%d/%m/%Y - %H:%i') AS linkdate FROM `link` WHERE link_user = $user_id AND link_status = 1

SELECT city_name FROM `cities` WHERE city_id = $user_city

以及一些表格:

event_id |     event_date      | event_userid | event_group | event_type
1        | 2019-02-18 10:57:29 |       1      |      1      |    4
2        | 2019-02-25 11:50:20 |       1      |      1      |    5
3        | 2019-03-05 12:15:38 |       3      |      2      |    3
etc


log_id |  log_email   |      log_date       | log_place | log_status
22     | asd@asd.com  | 2019-01-30 10:15:14 |     1     |     1
23     | asd2@awo.com | 2019-02-15 12:34:48 |     2     |     1
25     | owl@bong.com | 2019-03-05 17:48:35 |     1     |     1
etc


link_id | link_user | link_comp |     link_date       | link_status
3       |     1     |    55     | 2019-02-15 14:43:37 |      1
4       |     3     |    15     | 2019-02-28 18:38:16 |      1
5       |     2     |    30     | 2019-03-08 10:12:50 |      2
etc


city_id |     city_added      | city_name | city_status
11      | 2019-01-05 10:43:30 |  London   |      1
15      | 2019-01-06 10:34:13 |  Vienna   |      1
18      | 2019-01-07 10:11:41 | Las Vegas |      2
etc

有更好的方法吗?

1 个答案:

答案 0 :(得分:-1)

如果从中获取数据的表之间有任何连接,则可以使用JOIN查询,但是如果表之间没有连接,那么一种减少时间的方法不要在数据使用查询时使用date_format进行查询,无论您在哪里安排!!