0

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();

有什么建议么?

4

0 回答 0