SQL Server 2005 查询优化
Posted
技术标签:
【中文标题】SQL Server 2005 查询优化【英文标题】:SQL Server 2005 query optimization 【发布时间】:2012-11-05 07:12:13 【问题描述】:我的应用程序需要从 SQL Server 数据库中获取数据。我的问题是必须将 3 个表连接到一个视图中。这需要很长时间(生成视图大约需要 30 秒)所以我想知道是否有办法优化这个 SQL 查询?
SQL查询:
SELECT TOP (100) PERCENT Request1.RequestID,
TrackIT.dbo.Sending.Barcode,
TrackIT.dbo.Address_View.AdrID,
TrackIT.dbo.Address_View.Name,
TrackIT.dbo.Address_View.Street,
TrackIT.dbo.Address_View.HouseNo,
TrackIT.dbo.Address_View.Postal,
TrackIT.dbo.Address_View.City,
TrackIT.dbo.Address_View.Country,
Request1.Latitude,
Request1.Longitude,
Request1.ReceivedDate
FROM (SELECT DISTINCT RequestID,
Ltrim([Content]) AS Barcode,
Latitude,
Longitude,
ReceivedDate
FROM RequestWithLocation
WHERE ( Site LIKE '%Z' )
AND ( [Content] <> '' )
AND ( AddressID = '0' )
AND ReceivedDate > Dateadd(day, -7, Getdate())) AS Request1
INNER JOIN TrackIT.dbo.Sending
ON Request1.Barcode = TrackIT.dbo.Sending.Barcode
INNER JOIN TrackIT.dbo.Address_View
ON TrackIT.dbo.Sending.DeliveryAdrID = TrackIT.dbo.Address_View.AdrID
ORDER BY AdrID
谁能帮忙?
【问题讨论】:
好吧 - 这种情况:(Site LIKE '%Z')
肯定会杀死你所有的表现 - 因为它是 LIKE
和领先的 %
- 永远不会有索引可以使用.....
有什么方法可以在不使用 LIKE "%Z" 的情况下从 Site 列中获取所有数据?
你能放弃那一个条件,看看性能是否提高了吗?
在运行 6 次后,3 次在查询中带有 LIKE,3 次没有。 LIKE 的 3 次需要 17 秒,没有它需要 20 到 22 秒。当我在 MS SQL 中使用 Estimate Execution Plan 函数时,两个查询得到相同的结果
执行计划非常庞大,我无法将其合并到一张图片中。这些表没有被索引。
【参考方案1】:
您应该在表的连接字段上添加索引。
【讨论】:
【参考方案2】:您好,请尝试索引视图
供参考:http://technet.microsoft.com/en-US/library/cc917715.aspx
【讨论】:
以上是关于SQL Server 2005 查询优化的主要内容,如果未能解决你的问题,请参考以下文章