您的位置:首页 > 编程语言 > Java开发

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

2017-11-17 16:43 513 查看
首先在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万条数据 程序就运行了十几分钟。再大的数据量我怕电脑会烧,本人只是一个初入门级的菜鸟,还请各位大佬对在下错误的地方多多批评,在下感激不尽。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息