我正在尝试从多个表中获取需要合并在一起进行报告的数据。我试图获取在某个日期之后完成的每个标题的所有细节,并且必须检查0日期,因为数据不好。
我正在使用遗留表,遗憾的是,我没有创建,也无法更改。此语句在我的应用程序中超时,并且对本地虚拟机上的数据库运行大约需要40秒。是否可以重构查询以获得更好的性能?任何帮助表示赞赏!
const PORT = (process.env.PORT || 4200);
const runServer = (app)=> {
app.listen(PORT, ()=> {
debug(`Listening on http://localhost:${PORT}`);
if (__DEV__)
debug(`HMR on http://localhost:${config.BS_PORT}`);
});
}
runServer(app);
答案 0 :(得分:1)
header
:
INDEX(orderstatus, dateapply)
INDEX(invoice, orderstatus, dateapply)
detail
:
INDEX(invoice, dateapply)
INDEX(dateapply, invoice)
列的排序是有意的。由于我无法分辨优化器将从哪个表开始,因此我提供了应该是最佳方式的索引。
如果两个dateapply
列同步,则可能会进一步优化。
答案 1 :(得分:-1)
在我的同事和我之间,我们提出了以下查询,更快地返回结果。 GROUP BY消除了重复记录。我要感谢大家花时间帮我看看我的问题,并期待将来使用索引的可能性。
package main;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class Main extends Application {
private Canvas can;
private GraphicsContext gc;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Pane root = new Pane();
Scene scene = new Scene(root, 800, 400);
stage.setTitle("Test");
can = new Canvas(scene.getWidth(), scene.getHeight());
gc = can.getGraphicsContext2D();
root.getChildren().add(can);
stage.setResizable(false);
stage.setScene(scene);
stage.show();
InputStream is = Main.class.getResourceAsStream("Font/SSF4ABUKET.ttf");
Font font = Font.loadFont(is, 30);
gc.setFont(font);
gc.setFill(Color.RED);
gc.fillText("This is a test", 10, 200);
}
}