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コードを使用します
リーダー リーダー = Resources.getResourceAsReader(SQL_MAP_CONFIG_FILE_PATH);
sqlMapClient = new SqlSessionFactoryBuilder().build(リーダー);
SqlSession sqlSession = sqlMapClient.openSession(真);
Map kvpList = sqlSession.selectMap("getIdNameMap", "1", "NAME");
データをマップに取り込むのに 6902 秒かかります
次のコードでは、同じデータをマップにプルするのに 2368 秒かかります
ResultSet rs = sqlSession.getConnection().createStatement().executeQuery("CATEGORY = 1 の製品から NAME 、ID を選択");
while (rs.next()){
map.put(rs.getString(1), Long.parseLong(rs.getString(2)));
}
System.out.println(map.size());
rs.close();
助言がありますか?