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 made
和 query 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中的慢的主要内容,如果未能解决你的问题,请参考以下文章