我正在做大学工作,我必须按关键字搜索。我的实体名为Position
,我正在使用MySQL。我需要搜索的字段是:
- 日期
- positionCode
- 标题
- 位置
- 状态
- 公司
- tecnoArea
我需要在所有这些字段中搜索相同的单词。为此,我使用条件API来创建动态查询。对于多个字段来说,它是相同的单词,它应该获得最大可能的结果。您对如何优化数据库搜索有任何建议吗?我应该做几个查询吗?
修改
我将使用OR约束。
答案 0 :(得分:0)
不确定您的数据库是什么。
如果是Oracle,则可以使用Oracle文本。
以下链接可能有用:
http://swiss-army-development.blogspot.com/2012/02/keyword-search-via-oracle-text.html
答案 1 :(得分:0)
如果您需要在数据中的任何位置找到关键字,您需要使用LIKE和通配符,例如。标题LIKE'%manager%'。由于date和positionCode(可能是数字类型)不太可能包含关键字,为了获得非常小的性能增益,我将省略搜索这些列的关键字。您的查询将需要执行串行读取,这意味着表中的所有行都需要进入主内存来评估和检索查询的结果集。鉴于串行读取无论如何都会发生,我认为在搜索多个列时,您无法做太多优化查询。我不熟悉用于创建动态查询的#34;标准api,但在其他系统中使用动态查询是非最佳的 - 每次运行时都必须对它们进行解析和评估,并且大多数查询优化-rs都不能利用基于成本的优化的统计数据来提高性能,就像使用明确定义的SQL一样。