日期:2014-05-18  浏览次数:20455 次

排序后超慢的问题
select   *
from
(SELECT   p_Product.ProductGUID,   ProductName,   ProductCode,   ProductSpec,   Unit,   Price,   Remarks
            FROM   p_Product  
            left   JOIN   p_product2type   b   ON   p_Product.productguid   =   b.productguid
            LEFT   JOIN   vp_product2unit   c   ON   p_Product.productguid   =c.productguid
            left   JOIN   mybusinessunit   d   ON   c.bucode   =   d.hierarchycode
            WHERE     (1=1)   AND   (   CharIndex( '01.01.01 '   +   '. ',b.ProductTypeCode   +   '. ')=1   )
            AND   d.BUGUID=( '11b11db4-e907-4f1f-8835-b9daab6e1f23 ')
)   p_Product
结果集有18条记录。执行时间:76   ms

select   *
from
(SELECT   p_Product.ProductGUID,   ProductName,   ProductCode,   ProductSpec,   Unit,   Price,   Remarks
            FROM   p_Product  
            left   JOIN   p_product2type   b   ON   p_Product.productguid   =   b.productguid
            LEFT   JOIN   vp_product2unit   c   ON   p_Product.productguid   =c.productguid
            left   JOIN   mybusinessunit   d   ON   c.bucode   =   d.hierarchycode
            WHERE     (1=1)   AND   (   CharIndex( '01.01.01 '   +   '. ',b.ProductTypeCode   +   '. ')=1   )
            AND   d.BUGUID=( '11b11db4-e907-4f1f-8835-b9daab6e1f23 ')
)   p_Product
ORDER   BY   p_Product.ProductCode   ASC,p_Product.ProductGUID
结果集:还是18条记录。   执行时间:9733   ms
想不通为什么会差别那么大,仅仅排18条记录的序,就要费那么长时间吗?

------解决方案--------------------
建索引
------解决方案--------------------
建立索引可以提高查询的速度!
------解决方案--------------------
有 CharIndex的比较(字符串的比较),可能会慢.
------解决方案--------------------
学习