【问题标题】:Improving performance of wildcard date pattern searchs提高通配符日期模式搜索的性能
【发布时间】:2016-11-21 12:48:55
【问题描述】:

我有一个需要提高性能的通配符搜索:

mycolumn like '%-%%-%'

有办法做到这一点吗? (例如,有全文索引?)

Obs:我必须在文本中找到符合模式的日期,例如 21-07-2016。

编辑

我有一个无法更改结构的旧数据库。所以,我有一列是 nvarchar(max)。在此列中可以存储文本和日期。我必须找到插入日期的行。

【问题讨论】:

  • 您要搜索的字段的数据类型是什么?
  • @RichBenner nvarchar(max)
  • 我的第一个问题是您为什么不将这些存储为日期时间字段?您能否提供一些您正在搜索的数据的示例,以便我们准确了解问题所在
  • @RichBenner 因为我无法更改数据库结构。是遗留系统的遗留数据库。在当前列中可以保存文本和日期(当然作为文本)。所以,我必须找到保存日期的行,比如模式 dd-mm-yyyy 之后的文本。
  • 你能扩展数据库吗?也许添加一个解析字段并在其上有索引的视图?

标签: sql-server performance date wildcard


【解决方案1】:

如果无法更改结构,我认为您无能为力。如果这是一次性的,我建议简单地提取数据并进行处理。

如果这需要是一个持续的/BAU 流程,那么我认为唯一能提高您的性能的就是在您的模式匹配中更加具体一点,以消除您在当前匹配模式下会收到的误报。

假设您在问题中的格式是您要查找的唯一格式,您可以使用:

like '%[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]%'

【讨论】:

    猜你喜欢
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多