这是继续 Previous Query
CREATE TABLE [dbo].[t](
[words] [varchar](1000) NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
insert into t(words)values('this is my laptop')
insert into t(words)values('this does not contains heqadphone')
这两个插入迭代250次......
SELECT * FROM
t as t
JOIN CONTAINSTABLE(t, words,'"*heqadphone"') fulltextSearch
ON
t.[Id] = fulltextSearch.[KEY]
Select * from t where words like '%heqadphone%'
通常我们建议不要使用我后面的查询中所述的double %%。但在检查SQL事件探查器读取和持续时间
之后SQL Profiler Reads and Duration for Query - 1
SQL Profiler Reads and Duration for Query - 2
您能否确认,最好使用哪种查询?
答案 0 :(得分:5)
您正在比较具有不同功能的两个不同功能:CONTAINSTABLE
为您提供了其他信息,例如LIKE
没有的排名。所以第一个问题是,你真的需要全文功能吗?如果您这样做,那么您别无选择:必须使用CONTAINSTABLE
。
另一方面,如果您不需要FTS功能但只想以最快的方式搜索列中的单个单词,那么最佳方法就是您正在做的事情:使用实际数据测试两个选项设置并查看哪个在您的环境中表现更好。如果LIKE
表现更好,那么您可以使用它,但正如erikkallen所提到的,请确保使用与生产中相同的数据量进行测试。
答案 1 :(得分:1)
你有多少数据。如果你有250行,你可以做很多事情而不会很慢。如果这是您的生产数据量,那么随心所欲。如果没有,请使用您希望在生产系统中拥有的数据量运行测试。
答案 2 :(得分:0)
我认为,对于性能测量/分析,您需要的数据远远超过250*2 = 500
行。
您应该尝试测试100,000
记录