Galera, seguinte, possuo uma tabela que contém milhares de registros, e a previsão é que chegue a milhões… bom… hj, o usuário realiza uma busca parametrizando algumas informações via aplicação, por meio do hibernate, é realizada uma busca no banco de dados (DB2), porém a consulta não está retornando, pois está dando timeout…
veja bem, a idéia não é aumentar o tempo do timeout, mas sim automatizar a query para retorno dos dados.
a query é mais ou menos assim:
select distinct tabela10.dado1,
tabela9.dado2,
tabela1.dado3,
tabela4.dado4,
tabela3.dado5,
tabela6.dado6,
tabela1.dado7,
tabela1.dado8
from
schema1.tabela1,
schema1.tabela2,
schema2.tabela3,
schema2.tabela4,
schema2.tabela5,
schema2.tabela6,
schema2.tabela7,
schema2.tabela8,
schema2.tabela9,
schema2.tabela10
where
tabela6.dado9 = tabela2.dado9
and tabela1.dado10 = tabela2.dado10
and tabela3.dado11 = tabela1.dado11
and tabela4.dado12 = tabela2.dado12
and tabela5.dado13 = tabela7.dado13
and tabela5.dado14 = tabela7.dado14
and tabela8.dado11 = tabela1.dado11
and tabela9.dado15 = tabela8.dado15
and tabela10.dado16 = tabela1.dado16
and tabela4.dado14 = Parametro1
and lower(tabela6.dado17) like lower('%Parametro2%')
and lower(tabela1.dado18) = lower('Parametro3')
order by tabela10.dado1
Então… pensei em colocar pra query buscar so os 100 primeiros registros por exemplo, mas teria problemas quando o usuário quisesse ver mais de 100… o que é o normal… existe alguma forma da query buscar 100, apresentar na aplicação e continuar buscando e apresentando conforme for necessário ? (por demanda…)
Pensei também, em utilizar INDEX… mas não conheço a utilização de INDEX… logo não sei se seria um benefício ou malefício…
Essa tabela é constantemente utilizada em buscas, inserts e deletes…
Bom… qualquer ajuda será bem vinda…