mysql 表中有 100 万个条目 [name VARCHAR, id bigint(20), category int(11)]
我在 mybatis select xml 中使用下面的 SELECT SQL
<select id="getIdNameMap" parameterType="String" resultType="java.util.HashMap">
select NAME , ID from PRODUCTS where CATEGORY = #{value}
</select>
我使用以下java代码
阅读器 reader = Resources.getResourceAsReader(SQL_MAP_CONFIG_FILE_PATH);
sqlMapClient = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlMapClient.openSession(true);
映射 kvpList = sqlSession.selectMap("getIdNameMap", "1", "NAME");
将数据拉入地图需要6902秒
使用以下代码需要 2368 秒才能将相同的数据提取到地图中
ResultSet rs = sqlSession.getConnection().createStatement().executeQuery("select NAME , ID from PRODUCTS where CATEGORY = 1");
而(rs.next()){
map.put(rs.getString(1), Long.parseLong(rs.getString(2)));
}
System.out.println(map.size());
rs.close();
有什么建议么?