Tim*_*man 4 sql t-sql sql-server query-optimization sql-server-2008
我有一个看似简单的SQL Server查询,比我预期的要花费更长的时间.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT COUNT(DISTINCT(guid)) FROM listens WHERE url='http://www.sample.com/'
Run Code Online (Sandbox Code Playgroud)
'guid'是varchar(64)NULL
'url'是varchar(900)NULL
guid和url有一个索引.
'listens'表中有超过700万行,其中17,000行与相关网址相匹配,查询结果为5,500.
在具有1GB RAM的相当空闲的双核AMD Opteron 2GHz上,在SQL Server 2008上运行此查询需要1分钟以上.
有关如何缩短执行时间的任何想法?理想情况下它应该在1秒以内!
在url上创建一个索引,它将覆盖GUID
:
CREATE INDEX ix_listens_url__guid ON listens (url) INCLUDE (guid)
Run Code Online (Sandbox Code Playgroud)
在将url作为标识符处理时,最好存储和索引URL
哈希而不是整体URL
.
归档时间: |
|
查看次数: |
7401 次 |
最近记录: |