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コードを使用します

リーダー リーダー = 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();

助言がありますか?

4

0 に答える 0