【问题标题】:How to select text datatype in SQL Server faster如何在 SQL Server 中更快地选择文本数据类型
【发布时间】:2016-04-12 14:53:55
【问题描述】:

我有一个 TEXT 数据类型的列需要存储大量文本,因此我必须使用 TEXT 数据类型。

但是这个栏目需要经常搜索。如果我想比以前更快地进行搜索,我应该怎么做?

这是我的查询(workDescription 列的最大 DATALENGTH 为 399721)

SELECT [workID],
       [staffID],
       [workDate],
       [startTime],
       [endTime],
       [projectID],
       [timeFor],
       [workType],
       [workTitle],
       [workDescription], ---> text datatype
       [isDeleted],
       [createdDate],
       [createdBy],
       [lastUpdate],
       [updatedBy]
FROM [IndosoftDb_LIVE].[dbo].[tblTimesheet]
WHERE [workDescription] LIKE '%event%'
    OR [workTitle] LIKE '%event%'

注意:我的 PM 不想将其更改为 VARCHAR(MAX)。他害怕数据被截断。

【问题讨论】:

  • varchar(max) is the replacement for text,所以你的 PM 的担心是没有根据的。他为什么要为项目做出技术决策?
  • @Hackerman 说了什么。您应该查看全文搜索。
  • ntexttextimage 数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)varchar(max)varbinary(max)See details here

标签: sql-server database optimization sql-server-2012


【解决方案1】:

所以我必须使用 TEXT 数据类型

错了,你不知道 - varchar(max) 很适合。不要忘记,textntextimage 数据类型早在 2005 年就被弃用了。与它们的 (max) 继任者相比,通过 SQL 访问它们的内容相当麻烦。

您的 PM 在这个特定问题上不称职,他的怀疑很容易反驳 - 只需打开 varchar(max) 数据类型的文档即可。

回答您的问题 - 全文索引可能会有所帮助(实际改进将取决于您的确切搜索模式)。但我必须警告你——这东西的学习曲线相当陡峭,而且很难掌握。

【讨论】:

  • 我尝试使用全文索引,但结果不一样,所以只有一种解决方案是用 varchar(max) 转换它?
  • FTS 在搜索功能和(有时)结果方面与 like 不同。如果您要使用它,很可能您将不得不重写所有搜索查询。但是,列数据类型不会影响它 - 如果需要,您仍然可以使用 text
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
  • 2013-01-19
  • 2014-05-09
  • 2010-10-12
相关资源
最近更新 更多