java/mysql/慢

标签 java mysql

这里的要点是:

1.设置query_cache_type = 0;重置查询缓存;

2.在 heidisql(或任何其他客户端 UI)中运行任何查询 --> 执行,例如 45 毫秒

3.使用以下代码运行相同的查询 --> 执行时间为120 毫秒。并且与其他查询的差异呈指数级上升

4.添加/删除的那些根本没有帮助的东西被注释掉了

      long sql_execution_time = 0;
      String url = "jdbc:mysql://my.net:3306/test";

      Class.forName("com.mysql.jdbc.Driver").newInstance();

      Properties props = new Properties();
      props.setProperty("user", "root");
      props.setProperty("password", "pwd");

      //kao not recomended
      //http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html
      //props.setProperty("autoReconnect", "true");

      props.setProperty("characterEncoding", "UTF-8");
      //props.setProperty("useReadAheadInput", "true");
      //props.setProperty("SelectMethod", "direct");
      //props.setProperty("responseBuffering", "adaptive");



      Connection con = DriverManager.getConnection(url,props);
      String sql = "select g.*,t.id_tezaver_obfuscated,group_concat(t.data_source) as taxonomy_src,substring_index(group_concat(t.term order by t.eunis ),',',1) as term,(select count(t2.term) from tezaver t2 where t2.id_tezaver = g.id_tezaver and t2.l2 <> 'la') as c from galery_1 g left join tezaver t on g.id_tezaver = t.id_tezaver and t.l2 = 'la'  where 1 = 1 group by  g.id_galery  order by g.id_galery asc limit 0,18;";

      //java.sql.Statement stm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
      java.sql.Statement stm = con.createStatement();



      Calendar cal = Calendar.getInstance();
      long startTime = cal.getTimeInMillis(); 

      ResultSet rs = stm.executeQuery(sql);


      Calendar cal1 = Calendar.getInstance();
      long endTime = cal1.getTimeInMillis();
      sql_execution_time = endTime - startTime;
      long krneki = sql_execution_time;
      startTime = endTime;
      stm.close();
      con.close();
      result = String.valueOf(sql_execution_time);

最佳答案

重要的是要了解您的 Java 代码不仅仅是执行查询。它还做一些其他事情;

  • 加载mysql驱动
  • 打开连接
  • 创建一些对象

您正在对整个事情进行计时,而不仅仅是查询的执行。用户界面的行为可能有所不同。它可能只是计时查询执行所需的时间。

在性能方面比较两者并不符合逻辑。

关于java/mysql/慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8323056/

相关文章:

python - 在哪里定义Python类,mysql连接?

mysql - mysql 5.5.13有多稳定

java - Android 蓝牙发送/接收 HashMap

java - 从引用本地主机的远程 WSDL 创建 CXF 客户端

java - 仅在 Java 中验证 Int 和 double 数字

mysql - 删除引用另外 2 个表的查询

java - 如何在另一个类中使用来自 'MainActivity class' 的 Intent 传递数据,而不扩展任何类

java - Spring:将一条记录添加到列表中突然创建了一条重复项

php mysql 复选框和文本框值插入数据库

mysql - 如何使用wireshark清晰抓取mysql查询sql