搜索查询性能?

时间:2013-07-22 11:16:04

标签: java mysql jdbc

我想用不同的条件执行搜索操作。

例如。

Select * from test where field1="temp";

如果返回0记录,则检查

Select * from test where field2="temp";

如果返回0记录,则检查

Select * from test where field3="temp"; 

等等。每次更改查询字段。如果结果集不为空,则返回结果集。

我想知道以最佳方式执行此任务的最佳方式是什么?

  1. 创建Mysql函数,检查每个条件并返回。

  2. 在JAVA源代码中检查一下? (对我来说听起来不是一个好主意。)

  3. 在单个选择查询中是否还有其他方法可以执行此操作?

  4. 还有其他建议吗?我使用的是基本的JDBC servlet和MySql。

2 个答案:

答案 0 :(得分:1)

尝试使用SQL CASE

CASE case_value
  WHEN when_value THEN statement_list
  [WHEN when_value THEN statement_list] ...
  [ELSE statement_list]
END CASE

CASE
  WHEN search_condition THEN statement_list
  [WHEN search_condition THEN statement_list] ...
  [ELSE statement_list]
END CASE

http://dev.mysql.com/doc/refman/5.0/en/case.html

此外,执行此操作的存储过程也不错。

答案 1 :(得分:0)

用Java做这件事对我来说听起来不好。

private List<Object> retrieveData() {
    String[] fields = {"field1","field2"};
    String value = "foo";
    List<Object> results;
    for(String field : fields){
        results = getResults(field, value);
        if(!results.isEmpty()){
            break;
        }
    } 
    return results;
}

public List<Object> getResults(String field, String value){
    // Use Prepared statement here
    List<Object> results = "Select * from test where " + field + " = " + value;
    return results;
}

不确定通过查询执行此操作的性能。