我有一个用表格进行文献研究的项目(在SQL Server 2014中)。我从一些书中提取单词到比较表。这张表可能有数千个单词。 我写了一个查询来比较不同文档中的单词,并希望并排显示它们,以显示不同书中的每个单词频率。 写下这个:
SELECT c1.Word,c1.DocumentID,c1.WordCount,c2.DocumentID,c2.WordCount
FROM dbo.Comparation c1
JOIN dbo.Comparation c2 ON c2.Word = c1.Word AND c1.DocumentID <> c2.DocumentID
此查询在我的计算机上需要15秒。然后我决定逐页显示它们并写下:
SELECT c1.Word,c1.DocumentID,c1.WordCount,c2.DocumentID,c2.WordCount
FROM dbo.Comparation c1
JOIN dbo.Comparation c2 ON c2.Word = c1.Word AND c1.DocumentID <> c2.DocumentID
ORDER BY c1.DocumentID OFFSET 0 ROWS FETCH NEXT 15 ROWS ONLY;
现在有15个或更多的记录检索速度很好,但我的问题是: 当偏移量很小时,每件事情都可以,但是当我增加偏移时,查询运行速度很慢。 有没有办法快速加载和比较这些单词?
谢谢。
最诚挚的问候。
答案 0 :(得分:0)
看起来你正在加入nvarchar专栏&#34; Word&#34;。正如here所解释的那样,当在大量行上使用时会出现性能问题。
尝试生成额外的&#34; WordID&#34;列,对于每个单词都是唯一的,然后加入。