在大量数据中进行查询,有无索引查询的速度效果测试

来源:互联网 发布:js旋转木马轮播图 编辑:程序博客网 时间:2024/06/08 13:50

首先在JAVA程序中向数据库中进行数据的插入 ,因为要利用索引 ,少量的数据是不能够测试出索引的效果,所以要插入大量的数据进行测试,这次我们插入50万条记录

JAVA程序如下:建立一个表classfor,向其中录入50万条记录

package com.oracle.jdbc1.test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class TestUpdate {public static void main(String[] args) {try {Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/for1703a", "root", "root");Statement  stat=conn.createStatement();StringBuilder  sb=new  StringBuilder();for(int  i=0;i<500000;i++){ sb.append("("+(i+1)+",'wowo"+(i+1)+"',"+i+")");  if(i!=499999){sb.append(",");}}System.out.println(sb.toString());int  num=stat.executeUpdate("insert  into  classfor1(id,name,number)  values "+sb.toString());System.out.println(num);conn.close();} catch (SQLException e) {e.printStackTrace();}}}
首先进行无索引的测试:


以上是无索引等值查询,用时0.144ms;


以上是无索引范围查询,用时0.303ms;



接下来进行索引查询:这里有一个问题大家要注意,就是在选择索引方式的时候,要注意引擎的选择,因为有的引擎只支持一个索引方式,所以我选择了两个索引方式都兼容的MEMORY引擎,如下图:

我们首先测试BTERR索引方式进行查询:



BTREE索引方式下等值查找:用时0.001ms;




BTREE索引方式下范围查找:用时0.001ms;




接下来进行HASH索引方式查询:



HASH索引方式下的等值查询:用时0.001ms;



HASH索引方式下的范围查询:用时0.001ms;




根据数据显示,在几十万条记录乃至更多的数据中查询想要获得的结果时,利用索引查询是非常必要的,可以节省时间,提高一定的效率。

本人曾经在某博客中看到HASH和BTREE索引方式是不同的,HASH更适合等值查找,例如=  或者!=,不适合范围查询,而BTREE更适合范围查询,因为其没有HASH冲突。但是本次试验没有测试出两者的区别,我猜可能数据量还是不够,但是本人电脑太次,我插入50万条数据 程序就运行了十几分钟。再大的数据量我怕电脑会烧,本人只是一个初入门级的菜鸟,还请各位大佬对在下错误的地方多多批评,在下感激不尽。

阅读全文
0 0