我有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
有更好的方法吗?
答案 0 :(得分:-1)
如果从中获取数据的表之间有任何连接,则可以使用JOIN查询,但是如果表之间没有连接,那么一种减少时间的方法不要在数据使用查询时使用date_format进行查询,无论您在哪里安排!!