我有一个关于性能和数据库的问题。我使用MS SQL 2008。
我想知道WHERE语句中条件的顺序是否会提高或降低SELECT操作的性能。示例:
WHERE cnt.IsPublished = 1
AND cnt.TypeContent = 'AR'
AND cnt.ModeContent = 'AP'
AND cnt.CategoryId = '7';dfdfd
WHERE cnt.CategoryId = '7'
AND cnt.TypeContent = 'AR'
AND cnt.ModeContent = 'AP'
AND cnt.IsPublished = ;谢谢你们
发布于 2010-08-18 13:57:59
内置的查询优化器应该会为您处理此问题。但是,如果查询是未优化的,那么评估的顺序将由于短路而影响性能。
发布于 2010-08-18 14:00:11
如果您的数据库被正确地设置为收集表内容的统计信息,那么您的查询优化器应该能够很容易地计算出每个子句的基数,并首先处理那些减少数据集最多的子句(最高基数)。基数可以被认为是一列中有多少个唯一值。
例如,如果有一百万个不同的TypeContent值,但isPublished只有0或1,那么查询优化器应该首先处理TypeContent子句。
这意味着过时的、不正确的统计数据实际上比根本没有统计数据更糟糕。
如果数据属性定期更改,则应定期调整。请参阅here for SQL Server2008特定的统计信息,以及如何创建和维护这些统计信息。
https://stackoverflow.com/questions/3509322
复制相似问题