【问题标题】:SQL Server 2005 query optimizationSQL Server 2005 查询优化
【发布时间】: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 函数时,两个查询得到相同的结果
  • 执行计划非常庞大,我无法将其合并到一张图片中。这些表没有被索引。

标签: sql sql-server sql-server-2005 query-optimization


【解决方案1】:

您应该在表的连接字段上添加索引。

【讨论】:

    【解决方案2】:

    您好,请尝试索引视图

    供参考:http://technet.microsoft.com/en-US/library/cc917715.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多