Я нахожусь в центре войны с выбором, который атакует вид (действительно большой вид). моя проблема в том, что я хочу уменьшить время ответа, потому что я могу пойти в туалет, вернуться и сделать бутерброд. Надеюсь, извиняюсь за мое плохое чувство юмора. Так что это знаменитый выбор:оптимизировать выделение create с помощью jdbcTemplate
if (periodeDeute != null && clauDeute != null) {
if (periodeDeute.equals(EPeriodeDeute.EXECUTIVA)) {// EXEC
sql.append("SELECT VGPT_EXE.*, VGPT_EXE_E.* FROM ")
.append(Constants.T_VW_GPT_E_BASIC)
.append(" VGPT_EXE, ")
.append(Constants.T_VW_GPT_E_EXTES)
.append(" VGPT_EXE_E ")
/* filtre */
.append("WHERE VGPT_EXE.")
.append(Constants.CC_ANY + "= ").append("VGPT_EXE_E.")
.append(Constants.CC_ANY).append(" AND VGPT_EXE.")
.append(Constants.CC_NUM_REBUT + "= ")
.append("VGPT_EXE_E.").append(Constants.CC_NUM_REBUT)
.append(" AND VGPT_EXE.")
.append(Constants.CC_PERIODE + "= ")
.append("VGPT_EXE_E.").append(Constants.CC_PERIODE)
.append(" AND VGPT_EXE.")
.append(Constants.CC_COD_CONCEPTE + "= ")
.append("VGPT_EXE_E.")
.append(Constants.CC_COD_CONCEPTE)
.append(" AND VGPT_EXE.")
.append(Constants.CC_COD_EMISOR + "= ")
.append("VGPT_EXE_E.").append(Constants.CC_COD_EMISOR)
.append(" AND VGPT_EXE.")
.append(Constants.CC_COD_PROV + "= ")
.append("VGPT_EXE_E.").append(Constants.CC_COD_PROV)
.append(" AND VGPT_EXE.")
.append(Constants.CC_ANY + "= ? ")
.append("AND VGPT_EXE.")
.append(Constants.CC_NUM_REBUT + "= ? ")
.append("AND VGPT_EXE.")
.append(Constants.CC_PERIODE + "= ? ")
.append("AND VGPT_EXE.")
.append(Constants.CC_COD_CONCEPTE + "= ? ")
.append("AND VGPT_EXE.")
.append(Constants.CC_COD_EMISOR + "= ? ")
.append("AND VGPT_EXE.")
.append(Constants.CC_COD_PROV + "= ? ");
}
if (periodeDeute.equals(EPeriodeDeute.VOLUNTARIA)) {// VOL
sql.append("SELECT VGPT_VOL.*, VGPT_VOL_E.* FROM ")
.append(Constants.T_VW_GPT_V_BASIC)
.append(" VGPT_VOL, ")
.append(Constants.T_VW_GPT_V_EXTES)
.append(" VGPT_VOL_E ")
/* filtre */
.append("WHERE VGPT_VOL.")
.append(Constants.CC_ANY + "= ").append("VGPT_VOL_E.")
.append(Constants.CC_ANY).append(" AND VGPT_VOL.")
.append(Constants.CC_NUM_REBUT + "= ")
.append("VGPT_VOL_E.").append(Constants.CC_NUM_REBUT)
.append(" AND VGPT_VOL.")
.append(Constants.CC_PERIODE + "= ")
.append("VGPT_VOL_E.").append(Constants.CC_PERIODE)
.append(" AND VGPT_VOL.")
.append(Constants.CC_COD_CONCEPTE + "= ")
.append("VGPT_VOL_E.")
.append(Constants.CC_COD_CONCEPTE)
.append(" AND VGPT_VOL.")
.append(Constants.CC_COD_EMISOR + "= ")
.append("VGPT_VOL_E.").append(Constants.CC_COD_EMISOR)
.append(" AND VGPT_VOL.")
.append(Constants.CC_COD_PROV + "= ")
.append("VGPT_VOL_E.").append(Constants.CC_COD_PROV)
.append(" AND VGPT_VOL.")
.append(Constants.CC_ANY + "= ? ")
.append("AND VGPT_VOL.")
.append(Constants.CC_NUM_REBUT + "= ? ")
.append("AND VGPT_VOL.")
.append(Constants.CC_PERIODE + "= ? ")
.append("AND VGPT_VOL.")
.append(Constants.CC_COD_CONCEPTE + "= ? ")
.append("AND VGPT_VOL.")
.append(Constants.CC_COD_EMISOR + "= ? ")
.append("AND VGPT_VOL.")
.append(Constants.CC_COD_PROV + "= ? ");
}
try {
if (LOG.isDebugEnabled()) {
LOG.debug("SQL> " + sql.toString());
}
try {
llista = jdbcTemplate.query(
sql.toString(),
new Object[] { clauDeute.getCcAny(),
clauDeute.getCcNumRebut(),
clauDeute.getCcPeriode(),
clauDeute.getCodConcepte(),
clauDeute.getCodEmissor(),
clauDeute.getCodProveidor() },
new MapperDeuteDetall());
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
} catch (DataAccessException ex) {
if (LOG.isErrorEnabled()) {
LOG.error("No es pot recuperar la llista de deutes bàsics",
ex);
}
throw new GptException(
"No es pot recuperar la llista de deutes", ex);
}
}
просто выберите:
SELECT VGPT_EXE.*
, VGPT_EXE_E.*
FROM vw_gpt_e_basic VGPT_EXE
, vw_gpt_e_extes VGPT_EXE_E
WHERE VGPT_EXE.cc_any = VGPT_EXE_E.cc_any
AND VGPT_EXE.cc_num_rebut = VGPT_EXE_E.cc_num_rebut
AND VGPT_EXE.cc_periode = VGPT_EXE_E.cc_periode
AND VGPT_EXE.cc_cod_concepte = VGPT_EXE_E.cc_cod_concepte
AND VGPT_EXE.cc_cod_emisor = VGPT_EXE_E.cc_cod_emisor
AND VGPT_EXE.cc_cod_prov = VGPT_EXE_E.cc_cod_prov
AND VGPT_EXE.cc_any = 1994
AND VGPT_EXE.cc_num_rebut = 201
AND VGPT_EXE.cc_periode = 1
AND VGPT_EXE.cc_cod_concepte = 500
AND VGPT_EXE.cc_cod_emisor = 004
AND VGPT_EXE.cc_cod_prov = 43
;
это не очень трудно выбрать, но это ужасно медленно. у него много регистров, и оно создано слишком большим количеством таблиц, есть ли способ сделать это быстрее? с java или любым другим.
ty.
Вы можете узнать стоимость одного и того же запроса только с помощью select * и используя select 'column1', 'column2' и т. Д.? – aksappy
Вам нужны все столбцы VGTP_EXE и VGPT_EXE_E? если не только выбрать столбцы, а не все (*)! –
Мне нужны все столбцы, я пытаюсь без ответа ответить. – ZaoTaoBao