需要针对查询进行优化

时间:2016-05-02 07:49:37

标签: sql-server tsql indexing query-optimization

请帮助我优化下面的查询:

select s.ZahialgaID, sum(s.Quantity) total_qty, MAX(s.date_moved) MaxDate
from
    tCardMoveForTailan s
where
    (
        s.date_moved is null or
        s.date_moved <= @date_end or
        convert(varchar(20), s.date_moved, 111) = convert(varchar(20), @date_end, 111)
    ) and
    (
        s.TsehID = GoyoMSDB.dbo.GetTsehByCode('nyrav') or
        s.TsehID = GoyoMSDB.dbo.GetTsehByCode('rejected') or
        s.TsehID = GoyoMSDB.dbo.GetTsehByCode('orooson') or
        s.TsehID = GoyoMSDB.dbo.GetTsehByCode('zereg')
    )
group by s.ZahialgaID;

将此数据用于您的查询: http://orion.mn/updateapp/data_to_play.rar

现在此查询在200000行上运行10秒。 但我想这样一个简单的查询可能需要1或2秒。请帮我完成这项任务!

表tCardMoveForTailan有一个聚簇索引如下:

create clustered index IX_tCardMoveForTailan_2 on tCardMoveForTailan (ZahialgaID, TsehID, date_moved);

任何建议都将不胜感激!

根据评论的要求,dbo.GetTsehByCode()函数的主体:

CREATE FUNCTION GetTsehByCode (@code nvarchar(50))  
RETURNS int AS  
BEGIN
    declare @tsehid int
    select @tsehid = TsehID from tTseh where code=@code
    RETURN @tsehid
END

表tTseh只有10行。

1 个答案:

答案 0 :(得分:0)

也许这会有所帮助:

$('.ui.rating').rating('setting', 'onRate', function(value) {
  var url = '/update/item/' + $(this).data('id') + '/value/' + value;
  $('#href').text(url);
});