Sql server 2008 SQL查询需要更多时间查询SQL SERVER 2008 r2
下面是sql查询,第一次查询sql Server 2008 r2数据库需要47秒 但这是它第二次在2-3秒内查询。我不知道wt会是个问题。我是sql server新手。请帮助我,提前谢谢Sql server 2008 SQL查询需要更多时间查询SQL SERVER 2008 r2,sql-server-2008,Sql Server 2008,下面是sql查询,第一次查询sql Server 2008 r2数据库需要47秒 但这是它第二次在2-3秒内查询。我不知道wt会是个问题。我是sql server新手。请帮助我,提前谢谢 SELECT DISTINCT(SectionName) , Name, DispalyName, TypeVal FROM ReportData WHERE FileVersion = 1 ORDER BY SectionName; 在上面的查询报告中,数据表包含2154514行,但它只会查询241行
SELECT DISTINCT(SectionName) , Name, DispalyName, TypeVal
FROM ReportData
WHERE FileVersion = 1
ORDER BY SectionName;
在上面的查询报告中,数据表包含2154514行,但它只会查询241行,因为可能是不同的关键字。第一次运行查询执行计划时,它会被缓存。因此,当您第二次运行同一查询时,它将使用该计划,从而消除创建新计划的开销。这减少了执行查询和返回结果的时间 你可以在网上阅读这篇文章 其次,SQL Server提供了一种新的方法来减少每次必须从磁盘读取数据所造成的影响。进行查询时,读取的数据存储在缓冲区缓存中。如果您运行的是同一个查询,我相信它将从缓冲区缓存中读取,而不是进入磁盘,这将大大减少执行时间 另一方面,我认为47秒可能是一个合理的时间,因为您的表中有200多万条记录,并且您的查询也进行过滤和排序。您可能希望为用于筛选或分组的列编制索引 e、 g.您可以在SectionName上创建索引,您可以在DISTINCT子句中指定该索引,如下所示:
CREATE INDEX idx_SectionName on ReportData(SectionName)
删除不同的关键字,使用分组或子查询,添加所需的索引;如果所有这些都没有帮助,那么重新考虑数据库结构或查询逻辑。后续查询变得更快通常表明首先从硬盘读取大量数据。好的,感谢ReplyTanks的输入,我也在这样做。如果您不介意,可以为我上面的sql查询编写CREATEINDEX语句。无论如何,非常感谢你的帮助。