【发布时间】:2010-04-14 19:12:22
【问题描述】:
如果我有 20 个或更多的搜索字段并且任何组合都应该是有效的,那么最好的方法是什么。有没有什么特殊的方法可以在 openJPA 或原生 SQL 中做到这一点更好。任何想法都会有所帮助。谢谢。
【问题讨论】:
-
您需要搜索 20 多个字段中的任何一个,这将使您的查询中使用索引变得困难,这将导致搜索缓慢
如果我有 20 个或更多的搜索字段并且任何组合都应该是有效的,那么最好的方法是什么。有没有什么特殊的方法可以在 openJPA 或原生 SQL 中做到这一点更好。任何想法都会有所帮助。谢谢。
【问题讨论】:
您可以在存储过程或参数化 SQL 语句中尝试类似的操作。这样即使只有少数有值,您也可以传入所有字段。
@param1 varchar(25),
@param2 int,
@param3 varchar(10),
@param4 char(1)
SELECT column1, column2, column3, column4
FROM TABLE
WHERE (column1 = @param1 OR @param1 IS NULL)
AND (column2 = @param2 OR @param2 IS NULL)
AND (column3 = @param3 OR @param3 IS NULL)
AND (column4 = @param4 OR @param4 IS NULL)
【讨论】:
我认为您可能想要使用“Hibernate Search”之类的东西,它将全文搜索引擎的强大功能带入 DB 模型。因此,您可以提供类似 google 搜索的功能来执行客户想要执行的任何搜索组合。
我开发了一个带有 GUI 的演示应用程序来测试各种查询类型。
【讨论】:
我相信使用标准 api 是最好的方法。
请阅读该链接并检查您自己的:
【讨论】:
【讨论】: