java - 改进搜索功能

标签 java sql performance jsp search

如何改进搜索功能?我编写了一些代码来搜索某些内容。搜索花费了太多时间。代码片段在这里,

我正在使用此方法从数据库中提取数据。,

   OracleConnection connection = null;
   OraclePreparedStatement ptmst = null;
   OracleResultSet rs = null;
   OracleCallableStatement cstmt = null;
   StringBuffer strBfr = new StringBuffer();
   ArrayList myList = new ArrayList();
    try
    {     
      connection = (OracleConnection) TransactionScope.getConnection();
      strBfr.append("select distinct .......... ");  
      ptmst = (OraclePreparedStatement)connection.prepareStatement(strBfr.toString());    
      rs = (OracleResultSet)ptmst.executeQuery();           
      while (rs.next()) 
                {               
                HashMap hashItems = new HashMap();
                hashItems.put("first",rs.getString(1));
                hashItems.put("second",rs.getString(2));    
                myList.add(hashItems);
                }       

    }
    catch (Exception e) {
        }
    finally {

            try {
                if (ptmst != null) {
                    ptmst.close();
                }
            } catch (Exception e) {
            }

            try {
                if (connection != null) {
                    TransactionScope.releaseConnection(connection);
                }
            } catch (Exception e) {
            }

        }
        return myList; 

在我的jsp中:

 ArrayList getValues = new ArrayList();     
    getValues = //calling Method here.
    for(int i=0; i < getValues.size();i++)  
    {
    HashMap quoteSrch=(HashMap)allPOV.get(i);                        
    first = (String)quoteSrch.get("first");
    second = (String)quoteSrch.get("second");
    }

查询:

SELECT DISTINCT(mtl.segment1),
  mtl.description ,
  mtl.inventory_item_id ,
  mtl.attribute16
FROM mtl_system_items_b mtl,
  mtl_system_items_tl k
WHERE 1                           =1
AND mtl.organization_id           = ?
AND k.inventory_item_id           = mtl.inventory_item_id
AND NVL(orderable_on_web_flag,'N')= 'Y'
AND NVL(web_status,'UNPUBLISHED') = 'PUBLISHED'
AND mtl.SEGMENT1 LIKE ?  --Here is the search term

最佳答案

确保organization_id、inventory_item_id,尤其是SEGMENT1已在您的表中建立索引。

您的查询非常标准,如果这不起作用,那么您的数据库服务器似乎响应缓慢,这可能是由于空间不足、内存不足、磁盘/读取速度慢等多种原因造成的。

然后您可以要求 DBA/服务器管理员进行检查。

关于java - 改进搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15607476/

相关文章:

java - 使用正则表达式提取2个字符之间的所有子字符串组合

sql - 在 SQL 或 MySQL 中,我们可以连接一个表和一个子查询结果吗?

c++ - 预处理器如何处理宏?

浏览器的 JavaScript 评估时间

java - 如何在 Eclipse Java 项目中自动生成 .jar 文件

java - SolrCore 初始化失败

java - 随机枚举返回 null

sql - 为什么这个MySQL触发器会导致堆栈溢出?

php - 如何根据不同的时间范围从多个表中选择数据?

ios - NSTimer 更改间隔性能