Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 语句。executeQuery()占用的时间太多。有没有办法优化这一点?我正在使用雅典娜数据库_Java_Sql_Amazon Athena - Fatal编程技术网

Java 语句。executeQuery()占用的时间太多。有没有办法优化这一点?我正在使用雅典娜数据库

Java 语句。executeQuery()占用的时间太多。有没有办法优化这一点?我正在使用雅典娜数据库,java,sql,amazon-athena,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+ &quo

无论查询是什么,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纳秒

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

创建prepare语句,而不是每次编译它。使用参数准备查询。这是您可以进行的语法级优化。 Where子句参数,然后可以创建它的索引。这是数据库级优化。
比试着看看性能提高

我检查了雅典娜DB驱动程序

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

我想你们已经知道使用预先准备好的声明的好处了

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

你可以试试

日期不为空


谢谢你的回答。但不幸的是,athena的JDBC驱动程序缺乏现成的语句支持。所以我只能用它应该有的正常陈述。。您使用的是哪个版本的AJDBC41-1.1.0.jar我得到了这个异常方法Connection.preparedStatement还没有实现您是否分析了它以了解时间的走向?您是在外部网络上运行还是在AWS内部运行?where子句值的动态性如何?你执行了多少次?如果您可以添加有关所需内容的更多信息,也许我可以提供更多帮助如果您打开AthenConnection类,它具有以下准备语句的代码公共PreparedStatement prepareStatementString sql抛出SQLException{this.checkOpen;抛出新的NotImplementedExceptionConnection,prepareStatement;}同意你的上述评论。您是否可以检查explain plan Not aware Athena是否为相应的查询提供了此功能?检查哪个条款的成本更高。您是否尝试过日期不为空