工作查询优化 (SQL Server 2005)

Posted

技术标签:

【中文标题】工作查询优化 (SQL Server 2005)【英文标题】:Working Query Optimization (SQL Server 2005) 【发布时间】:2013-12-25 06:21:35 【问题描述】:

我有一张表Orders,我正在从客户/用户那里获得订单日期规范,如到期日等,但我不需要订单到期时间。以下查询与日期时间类似:

SELECT 
    orderDate as Order_DateTime,  
    convert(varchar(10),orderDate,120) as Order_Date,
    DATEADD(dd,2,orderDate) as Order_Expiry_DateTime,
FROM 
    [Orders]
WHERE 
    orderId = 55;

结果是:

Order_DateTime          |  Order_Date   | Order_Expiry_DateTime   
2013-12-19 21:54:00.000 | 2013-12-19    | 2013-12-21 21:54:00.000 
2013-12-19 19:21:00.000 | 2013-12-19    | 2013-12-21 19:21:00.000 
2013-12-19 19:29:00.000 | 2013-12-19    | 2013-12-21 19:29:00.000 
2013-12-24 22:10:00.000 | 2013-12-24    | 2013-12-26 22:10:00.000 
2013-12-25 18:00:00.000 | 2013-12-25    | 2013-12-27 18:00:00.000 
2013-12-24 23:11:00.000 | 2013-12-24    | 2013-12-26 23:11:00.000 
2013-12-24 20:37:00.000 | 2013-12-24    | 2013-12-26 20:37:00.000 

现在在下面的查询中,我从Order_Expiry_DateTime 中删除了时间部分。

结果符合我的要求,但我可以在某种程度上优化这个查询吗?

SELECT 
    orderDate as Order_DateTime,  
    convert(varchar(10), orderDate, 120) as Order_Date,  
    convert(varchar(10), (DATEADD(dd, 2, orderDate)), 120) as Order_Expiry_Date   
FROM 
    [Orders]   
WHERE 
    orderId = 55;

结果很好,如:

Order_DateTime          |  Order_Date   | Order_Expiry_Date
2013-12-19 21:54:00.000 | 2013-12-19    |   2013-12-21 
2013-12-24 22:10:00.000 | 2013-12-24    |   2013-12-26 
2013-12-25 18:00:00.000 | 2013-12-25    |   2013-12-27 
2013-12-24 23:11:00.000 | 2013-12-24    |   2013-12-26 
2013-12-24 20:37:00.000 | 2013-12-24    |   2013-12-26 

可以

convert(varchar(10), (DATEADD(dd, 2, orderDate)), 120)

用更好的东西代替?我搜索了但找不到一个,所以请指导我。

【问题讨论】:

***.com/questions/113045/… 但是我怀疑对那个 Order_Expiry_DateTime 字段执行额外的操作可以称为“优化” 在 SQL Server 2008 和更高版本中,您可以轻松地使用 CAST(orderDate AS DATE) 来获取仅日期部分 - 但对于 2005 我没有不认为你可以对这个表达做很多事情...... @Sohail 我认为这种方式已经足够好了,但是性能会更多地影响其他方面,例如 where 子句或加入方式等 您的计算在大约 10 行上被调用。无论您做什么,都很难衡量任何差异。这是查询执行成本的 【参考方案1】:

确保 OrderId 已编入索引,然后确保在添加时不会对该表进行插入和更新。

【讨论】:

以上是关于工作查询优化 (SQL Server 2005)的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2005 查询优化

SQL server2005上千万条数据分页查询怎么做优化?

sql server2005主从数据库同步配置

sqlserver2005模糊查询分页具体该怎么实现?

SQL Server 2005 - 内部联接的顺序

SQL Server查询优化中的两个选项