我有这两个表(简体),可以包含很多约会和很多情节
约会
date | person_id | episode_id
-----------+-----------+------------
12-11-2019 | 1 | 1
18-10-2019 | 1 | 1
11-10-2019 | 1 | 1
10-12-2018 | 1 | 2
10-11-2018 | 1 | 2
剧集
episode_id | Name
-----------+------------
1 | Episode 1
2 | Episode 2
现在我需要列出情节内的约会编号(按顺序)。
因此查询结果将是:
Appointment | Episode | Appointment number
------------+------------+----------------------
12-11-2019 | Episode 1 | 3
18-10-2019 | Episode 1 | 2
11-10-2019 | Episode 1 | 1
10-12-2018 | Episode 2 | 2
10-11-2018 | Episode 2 | 1
所以我的查询(简化)如下:
select
a.date, e.name,
(select count(*) from appointment a1
where a1.espisode_id = a.episode_id and a1.date < a.date ) + 1
From
appointment a
join
episode e on e.episode_id = a.episode_id
where
a.person_id = 1
现在这可以正常工作,但是子select语句正在杀死数据库。我们获得了超过500万次约会和超过一百万集。
有什么想法可以优化它,从而减轻数据库负担吗?
答案 0 :(得分:3)
使用窗口功能!
await $.ajax("generateFile.php", {
type: "POST",
data: {
param_1: param_1,
param_2: param_2
},
success: function(data){
var a = $("<a>")
.attr("href", "path/filename_on_server.txt")
.attr("download", "filename_on_client.txt")
.appendTo("body");
a[0].click();
a.remove();
},
error : function(data) {
alert("ajax error, json: " + data);
}
});