首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Like搜索替换dynamic和可以吗?

问用Like搜索替换dynamic和可以吗?
EN

Stack Overflow用户
提问于 2020-03-10 12:56:12
回答 2查看 35关注 0票数 0

我希望在编译时生成MYSQL查询。有一些和子句我想让它们根据可选的输入参数动态地附加到查询中,这些参数在运行时是已知的。

因此,我计划使用LIKE搜索,而不是动态连接AND。

假设我有一个名为'Ramakrishna‘的值,查询如下

代码语言:javascript
复制
  SELECT * from my_table WHERE col LIKE '%Ramakrishna%'

当参数没有值时,我想使用like search

代码语言:javascript
复制
  SELECT * from my_table WHERE col LIKE '%%'

我想对我的查询中的15个参数执行此操作。除非我知道这个方法的性能趋势,否则我不想对一个巨大的查询这么做。费用会很高吗?

EN

回答 2

Stack Overflow用户

发布于 2020-03-11 11:59:20

动态构建查询。句号。

  • 通过构造查询,您将包括优化器可能会错过的优化。
  • 构造查询的开销可能比MySQL解析和优化查询的工作要少。
  • 请注意,带有前导通配符的LIKE是不可优化的。考虑避免这种情况的方法。
  • 有几个多列(“复合”)索引来帮助处理通常要搜索的列。这将是最好的optimization.
票数 1
EN

Stack Overflow用户

发布于 2020-03-10 13:39:27

如果您可以创建具有15个参数字典,那么

代码语言:javascript
复制
with par as (
      select name_par
      from params
     )
select *
from my_table, par
where col LIKE par.name_par 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60611755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档