2016-05-26 3 views
0

я пытаюсь изменить строку из переднего конца и запроса застревать, запрос работает нормально без UPPER, но, как я применил upper он застрял без каких-либо ошибокпочему этот запрос Sql застревает?

запрос следующим образом:

String editquery = "UPDATE ENV_SERVER_DETAILS SET " + 
    "SERVER_NAME=? , HOPBOX_IP=? , ENV_NAME=? , REGION=? , PASSWORD=? , DELETE_FLAG='Y' , SUPERUSER=? , SUPERPASSW=? ," + 
    " COMPONENT='' , SPECIFICATION_OR_DBNAME=? , IP_ADDRESS=? , COMMENTS='' , LAST_UPDATED_BY=? ," + 
    "LAST_UPDATED_ON=to_date(to_char(SYSDATE,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') ," + 
    "OTHER_DETAILS=? " + 
    "WHERE UPPER(SERVER_NAME) = UPPER(?) and MOTS_ID = ?"; 

я применили upper, потому что некоторые серверы в БД находятся в нижнем регистре

+0

больше объяснений для «застревания» пожалуйста .......... – piyushj

+2

«Застревает» означает, что это займет гораздо больше времени, чем вы ожидаете? Сколько времени это обычно занимает, и сколько времени это занимает сейчас - или оно никогда не возвращается? Если это медленнее, это может быть связано с тем, что вы останавливаете использование индекса (на самом деле это ответ на адрес sagi); если он никогда не возвращается, вы уверены, что затронутые строки не заблокированы обновлением с другого сеанса? –

+0

отнимает много времени – Amol

ответ

5

я могу предложить добавление INDEX на формат этого столбца UPPER:

CREATE INDEX SERVER_NAME ON ENV_SERVER_DETAILS (UPPER(SERVER_NAME)); 

Проблема заключается в том, что даже если есть индекс по этому колонку, то UPPER ликвидирует использование этого, поэтому - запрос медленно.

То есть, если «застрять», вы имеете в виду медленно.

+0

thnks man ..this works – Amol

Смежные вопросы