【发布时间】:2018-06-19 02:31:00
【问题描述】:
我目前正在尝试执行一个查询,但在让它加载几分钟后,我想我可能做错了什么。
这是我要执行的操作:
SELECT *
FROM open_hours
INNER JOIN open_times
ON open_hours.id = open_times.open_hour_id
INNER JOIN off_peak_times
ON open_hours.id = off_peak_times.open_hour_id;
我有三张桌子:
开放时间:
大约 14k 行
id;
owner_type;
owner_id;
seats;
time_interval;
max_at_one_time;
created_at;
updated_at;
minutes_in_advance;
开放时间:
大约 18k 行
id;
open_hour_id;
time_start;
time_end;
weekday;
created_at;
meal_type;
off_peak_times:
大约 10k 行
id;
open_hour_id;
time;
discount;
seats;
created_at;
updated_at;
weekday;
我尝试将 SELECT * 减少为 SELECT open_hours.id, open_times.meal_type,因为实际上这是我现在想要获得的唯一数字。它让我在大约 30 秒内得到结果,这对我来说听起来还是很多。
我在其他更大的表上运行其他查询,但几乎可以立即获得结果,那么我是否缺少或没有考虑某些内容?
【问题讨论】:
-
您是否查看了执行计划以了解它对查询的说明?它可能会建议可以提高性能的索引,或者暗示可以优化查询的方式。
-
我认为这是你能得到的最好的。您可以考虑使用交叉应用而不是连接,但我不知道这是否有帮助...您还可以增加数据库本身的 DTU/性能层
-
@KenWhite 我没有,因为我不知道什么是“执行计划”哈哈哈。 MySQL / SQL 初学者在这里。现在去谷歌。
-
@james5 好的,谢谢,现在要查找“交叉申请”,这意味着什么哈哈。谢谢!
标签: mysql sql mysql-workbench