为什么这个Sql查询被卡住了?

时间:2016-05-26 10:50:02

标签: oracle

我正在尝试从前端编辑一行,但查询卡住了,查询运行正常而没有UPPER,但是当我应用upper时,它被卡住而没有任何错误

查询如下:

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,因为DB中的某些服务器是小写的

1 个答案:

答案 0 :(得分:5)

我建议您在此列的INDEX格式上添加UPPER

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

问题在于,即使此列上有索引,UPPER也不会使用它,因此查询速度很慢。

那就是“卡住了”#39;你的意思是慢。