java中的简单mysql选择比MySQL Workbench中的慢

Posted

技术标签:

【中文标题】java中的简单mysql选择比MySQL Workbench中的慢【英文标题】:Simple mysql select slower in java than in MySQL Workbench 【发布时间】:2016-06-22 21:39:29 【问题描述】:

我运行选择的 scala 代码比在 mysql Workbench 上发出相同查询慢一个数量级。与 MySQL Workbench 中的相同查询相比,我的调试打印 connection madequery returned 之间的时间非常长,所有其他步骤都很快。当然,我在这两种情况下都使用相同的数据库用户。

import java.sql.Connection,DriverManager,ResultSet

object JavaSQL extends App 

  val driver = "com.mysql.jdbc.Driver"
  val url = ..
  val user = ..
  val password = ..

  println("loading driver")
  Class.forName(driver) // loads the driver
  println("driver loaded")

  val connection = DriverManager.getConnection(url, user, password)
  println("connection made")

  val rs: ResultSet = connection.createStatement.executeQuery("SELECT * from Foo")
  println("query returned")

  connection.close


build.sbt:

lazy val project = (project in file("."))
  .settings(
    scalaVersion := "2.11.7",
    libraryDependencies ++= Seq("mysql" % "mysql-connector-java" % "5.1.38")
  )

我应该怎么做才能达到标准?它与在 mysql 的命令行中运行相同的查询一样慢。 Workbench 必须使用一些特殊的标志。

我使用 JDBC/SQL 抽象已经有一段时间了,现在回到 java.sql,所以请温柔..

【问题讨论】:

您是否在计算与数据库建立连接所需的时间?此外,JVM 预热。 对不起,我现在已经在问题中澄清了。我认为答案是否定的。除了我描述的那一步之外,一切都很快。 如果您比较只返回一行而不是返回多行的查询的性能,例如SELECT COUNT(*) AS n FROM Foo,这有什么不同吗? 问题解决了,见下文,谢谢! 实际上,执行查询会很好,这样使用它的代码就不会等待整个表流过……但这与原始主题有点不同。 【参考方案1】:

MySQL Workbench 使用 1000 行的默认限制。就是这样。

【讨论】:

以上是关于java中的简单mysql选择比MySQL Workbench中的慢的主要内容,如果未能解决你的问题,请参考以下文章

MySQL之选择字段数据类型

MySQL 选择特定的列比选择慢 *

mysql 存储过程

Mysql存储过程

MySQL中的存储过程

Mysql---存储过程