gpt4 book ai didi

sql-server - SQL Server : 'contains' vs 'charindex'

转载 作者:行者123 更新时间:2023-12-03 00:02:34 26 4
gpt4 key购买 nike

我在 ms sql server 中遇到查询问题。我在名为“col1”的列上有一个全文索引。此列中的数据可能会变得相当大(20、30 kb +)。我现在想在此列中搜索确切的短语。

有人告诉我“包含”函数是最快的函数,但我知道至少有两种其他方法可以做到这一点;使用“like”函数,并使用“charindex”。

问题是,当我搜索包含 # 符号的短语时,“包含”不起作用。例如,“... WHERE contains(col1, '"query string#"') ...” 将始终返回 0 个结果。

我已改用 charindex,它确实返回结果,但使用此函数查询数据库需要更长的时间。

有什么方法可以加快此查询速度或让 contains 函数接受我的 # 符号吗?

感谢您的宝贵时间...

更新我决定在使用 charindex 和 contains 函数之间进行切换。所以如果查询数据包含#符号,我们改用charindex;对于所有其他查询,我使用 contains。似乎效果最好。

最佳答案

我们自己实现 FTS 时也遇到类似的问题。这是因为 Microsoft 从其索引例程中删除了许多特殊字符和常见单词。

在我们的情况下,我们可以控制输入并通过翻译特殊字符(例如哈希符号)的函数传递所有文本。因此,哈希符号的数据库输入可能类似于“zxzHASHyxy”。

然后,我们可以在执行搜索时用翻译版本替换“真实”版本。

但是,这种实现有一个很大的缺点。如果您需要保留未翻译文本的副本,则必须在单独的列中执行此操作,这将导致数据库大量膨胀。

谨慎使用此解决方案。

关于sql-server - SQL Server : 'contains' vs 'charindex' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/852754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com