【问题标题】:Which data type is good for full text search?哪种数据类型适合全文搜索?
【发布时间】:2016-08-29 13:14:54
【问题描述】:

我有一个包含超过 600 000 条记录的表,并且我正在使用 varchar(max)。使用全文搜索时,性能非常慢,并且占用了 100% 的 CPU。

所以我打算将数据类型 varchar(max) 更改为文本。

哪种数据类型适合全文搜索?如何提高性能?

桌子大小:

【问题讨论】:

  • 文本已被弃用,在任何情况下都不要使用它。
  • 在 cmets 的另一个答案中,您说您有 varchar(300) 和 varchar(max) 但性能很慢。您如何共享表定义,包括索引和您正在使用的查询?否则我们只能猜测。

标签: sql-server performance full-text-search database-performance


【解决方案1】:

这取决于您存储的数据类型和数据大小。如果数据被频繁检索,则以“varchar”类型存储是可以接受的。

但是,如果数据太大。很明显,要使用数据类型“文本”。

你应该使用:

varchar - 如果数据是字符串类型(不会太大)。

(例如)用户名、电子邮件、国家等,

text - 如果数据太大并且包含复杂类型(int + string)的数据。

(例如)消息、日志 ..,

您还可以在需要时使用“mediumtext”和“largetext”。

当您将一些“json”对象存储为字符串时,您可以使用中等文本。如果你要存储一些大型的“json”数组,可以考虑使用“largetext”。

在选择会影响性能的数据类型之前,您应该考虑以上情况。

结论:

大量小数据 - var
少量大数据 - 文本

我也建议你访问这个link

【讨论】:

  • 请不要建议任何人使用文本数据类型。它已经被弃用十多年了,使用起来非常糟糕。您应该改用 varchar(max)
  • 但是,如果您使用文本执行全文搜索将是最佳选择,因为我们还为它们存储索引。请访问此链接:brandonsavage.net/…
  • 不,这是不正确的。实际上,直接从您发布的文章中如何处理。 “另一个最喜欢的(也是不好的)开发实践是使用 TEXT 列来存储大块文本”
  • 您应该阅读并了解更多关于全文搜索的工作原理。 msdn.microsoft.com/en-us/library/ms142571.aspx 它可以用于许多基于字符的数据类型。您还应该阅读有关 TEXT 数据类型的信息。 msdn.microsoft.com/en-us/library/ms187993.aspx 工作是一场噩梦,千万别这么做。
猜你喜欢
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-10
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
相关资源
最近更新 更多