Statement.executeQuery()花费了太多时间。有没有办法优化这个?我正在使用Athena DB

时间:2018-03-21 06:37:08

标签: java sql amazon-athena

无论查询是什么,Statement.excecuteQuery()都会占用太多时间。

athenaQuery = "SELECT DISTINCT date " +
                "FROM sid.lvmh_shareofshelf_new_cat_all_dod where scope='PCD' and date!='' and country='" + countryName+ "' " + "and rname='" + rname
                + "' and  top_category_lvmh='" +  top_category_lvmh + "' ORDER BY date DESC";
stmt = conn.createStatement();
        long startTime = System.nanoTime();
        rs = stmt.executeQuery(athenaQuery);
        long endTime = System.nanoTime();
        System.out.println("Total time taken : "+ (endTime - startTime));

所需时间为2776930359纳秒(2.776930359秒)

2 个答案:

答案 0 :(得分:1)

我不知道你项目的内部结构。我建议一些对你有帮助的事情。

  • 每次都创建prepare语句而不是编译。使用参数准备查询。这是您可以执行的语法级优化。
  • 每次你想要的Where子句参数都可以创建它的索引。这是数据库级优化。

比尝试看看性能提升!!

答案 1 :(得分:0)

我检查了Athena DB驱动程序,

https://s3.amazonaws.com/athena-downloads/drivers/AthenaJDBC41-1.1.0.jar

它有com.amazonaws.athena.jdbc.AthenaConnection类,它从JDBC API实现java.sql.Connection接口。它拥有JDBC承诺的所有重载的prepareStatement方法。

我假设您已经知道使用Prepared语句的好处。

在您查询Where子句中的日期!='' 是字符数据类型吗?

你可以尝试

  

日期不为空