Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 оптимизация sql запроса  [new]
framework
Member

Откуда:
Сообщений: 16
дд как оптимизировать данный запрос?

+
with CTEa
as
(
select c.DateX, c.WarehouseId, c.GoodsId, sum(c.Quantity) CreditQuantity, ROW_NUMBER() over(partition by c.WarehouseId, c.GoodsId order by sum(c.Quantity) desc) rn
from CreditCurrentViewCompact c
where 1=1
and c.WhatBase in (11,21)
and c.DateX between '20170201' and '20170724'
and c.WarehouseId in (33,34,35,36,37,38,39,91,115,132,135,138,139,140,142,143,144,146,156,157,158,165,166,167,168,173,174,175,176,179,180,188,190,195,196,198,208,209,219,224,225,226,227,228,229,230,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,279,281,283,284,286,291,292,293,294,295,296,297,298,299,300,301,302,303,304,306,308,309,311,312,314,315,317,318,319,320,321,322,323,324,325,326,328,330,331,332,334,336,337,338,339,340,341,342,343,344,346,347,348,349,350,351,352,354,355,356,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,399,400,401,402,403,404,405,406,408,409,410,412,413,414,415,416,417,418,419,420,421,422,424,425,426,427,428,429,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,462,463,464,465,466,467,468,469,470,471,472,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,495,496,497,498,499,503,506,507,508,509,511,512,513,514,515,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,538,539,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,605,607,609,610,613,616,618,619,622,624,625,626,627,628,629,635,636,637,638,639,645,647,655,657,659,661,662,664,667,668,670,674,675,676,677,678,679,681,682,687,688,689,690,691,692,693,700,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,750,760,770,775,777,780,790,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,826,828,829,830,832,833,834,836,840,841,842,844,846,847,850,852,854,856,858,859,860,861,862,863,864,866,868,870,871,872,874,876,878,882,884,886,890,891,892,893,894,895,896,897,898,902,910,911,913,915,918,919,921,922,923,927,928,929,933,934,935,938,946,948,949,950,952,954,955,956,957,958,959,962,963,964,966,977,978,983,984,985,986,991,994,996,997,999,6003,6004,6009,6010,6011,6012,6013,6014,6015,6016,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6084,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428,6429,6430,6432,6433)
and c.GoodsId in(739478,740733,734764,751395,713234,739652,713649,744172,714475,727553,714652,739638,714964,740099,717004,712683,744418,724487,720601,701565,675434,711487,645678,689391,647288,711107,648967,675164,653359,677473,663422,697445,664133,706269,665567,711141,665875,711621,633841,621390,640243,570346,630288,571946,634804,571948,619058,573809,628552,575978,632367,577288,634027,580562,639798,584775,644451,592152,620119,594240,626874,598143,630285,600098,630432,600103,633337,605559,633842,606043,634028,606047,634948,614530,640242,615303,640566,617493,619056,644485,556301,568003,561178,516906,556218,523503,559368,533408,567999,534930,553359,534931,556300,535216,556303,539288,560208,548344,564562,551318,568000,551371,568821,552575,543648,438183,499932,488276,440852,471146,441141,487937,441412,498416,441444,505798,441445,472099,441726,484907,441730,487939,441819,488291,442411,498446,443060,505765,443869,507657,447509,471922,448976,510241,451499,482400,457336,486935,458464,487938,466474,488160,467126,488290,467156,489733,467702,498419,467869,499337,468332,505761,471142,505766,471143,506633,471144,471145,478101,428715,394327,375461,315200,409051,317599,365861,318908,380888,319523,406823,329105,414583,329995,364174,338937,371892,338988,375462,339819,387928,345347,406125,347843,408418,353422,412973,353852,416191,355909,431254,358250,358373,245718,277731,258389,190754,310025,191636,257956,196254,265144,197490,291257,199266,239781,200419,253337,204318,258038,204810,259368,205408,273391,205409,285037,208221,307031,209720,312551,213189,313620,213342,253336,214620,256769,218143,258006,218147,258044,218157,259361,218178,263651,218307,265694,225503,274456,225504,280798,227964,285038,230205,305433,230207,307991,235221,312539,237976,239142,188885,126431,159950,145333,71340,176600,71570,135500,73220,152648,74208,173889,77772,184002,87086,132424,87153,139579,88352,150370,93033,154238,95308,162326,95479,176002,97355,124914,97467,126430,102941,130897,104868,132946,124850,138326,124895,144610,124896,149652,124897,152337,124899,152818,124901,155664,124903,162041,124906,168193,124907,175997,124911,176097,124912,124913,124938,30921,57197,46397,1192,23166,1603,38468,3003,51153,3004,20809,3009,24541,3010,33433,3016,44562,4190,47049,8033,53755,8047,63252,11061,22174,12014,24003,12066,30920,12077,31112,12079,38069,12081,39556,12083,44673,12096,46607,13768,51150,14029,52209,16356,56226,17129,61568,17355,67391,18452,23170,199727,717455,720072,727006,703373,681933,706278,647321,703170,672899,649177,654049,651245,655017,659055,633839,634337,571789,602688,637137,613859,588159,613861,634200,618782,583471,640625,562971,520197,565399,526557,560810,527097,564159,536583,565400,569236,551469,479675,509701,466150,477473,460256,499380,498148,485195,509697,502658,504382,504563,409025,337855,372863,364172,400512,336330,365862,397428,191119,195870,221079,228265,232045,169601,93124,153008,132287,183599,136411,94319,126000,8021,22173,685354,742410,655018,664134,684114,701655,633206,632370,603566,644252,632262,556304,533163,562970,567997,534168,494634,482203,438188,489728,479743,400239,314662,338989,337818,193059,102909,105539,156527,36006,7815,3855,19013,45258,34219,58775,35393,746334,714446,671334,692407,701684,625438,536587,532333,560809,562615,489736,482399,498147,469664,424530,412580,322128,215086,181599,169652,166,15459,13769,734443,701683,710680,697496,708206,654750,634415,613806,587736,541120,560812,544938,530432,496629,440850,500798,355098,380063,409021,201708,218165,211516,214116,215068,70977,95815,149747,12082,60135,746354,740051,731718,651578,681917,709823,653783,570820,626307,583472,554499,565369,510982,552633,455236,470420,322900,434818,413356,218256,253700,303425,264933,202872,258045,170410,14025,12075,753755,573808,629531,560209,568819,444929,482398,409553,329542,401247,251281,76755,45591,10091,68176,189520,743936,661243,673176,598437,629491,632164,537893,485266,279498,72127,81033,126172,60137,729701,700005,651486,516834,488292,470440,503687,356522,334264,285036,96838,188769,187214,91969,29934,1602,654420,633240,626189,581744,510774,520892,470421,340286,329783,222503,297018,180773,12078,12693,689434,621344,634332,635031,528442,444316,326930,423492,309156,211322,263777,170842,188772,6034,719543,565012,544934,548798,565370,457304,485267,322991,417465,326096,316490,380509,254046,175920,68999,42679,55551,755913,648603,574843,529995,535757,554500,548055,496568,505666,487756,413924,426195,157238,733888,500628,403314,254730,710023,703631,648036,647160,655467,624128,570485,485626,497614,433172,409454,237147,1331,21300,744425,714271,644828,673752,637911,599210,537305,498149,349942,404078,435104,77845,90058,159954,747766,720063,503805,218192,14058,41823,710930,609751,413837,381473,756614,739811,709822,617671,435974,226332,267318,190085,105221,742994,756506,694134,668266,573277,491388,453299,454789,406889,133596,87899,469663,472997,223993,198095,721389,701686,621686,467703,172944,12802,730114,730889,661540,648035,709826,668056,578764,556299,516832,255939,255648,96826,16687,33019,15282,600252,649676,644453,541117,569462,458206,335100,80648,24662,673175,701704,576189,405779,208877,208027,154892,61529,35313,754110,229135,754109,747080,82187,692431,655475,560811,457219,327369,294884,245715,263775,243943,78641,84743,131005,42260,756309,756508,598914,556302,223994,225431,754113,754112,519273,715750,733889,730891,651872,596491,609306,541329,560127,463667,474138,473710,399706,655900,460291,104145,32277,226216,239734,42206,45271,518251,566607,144929,165797,12087,618784,728785,621294,639797,638611,467458,436424,726049,692437,598436,562969,495296,435973,147494,722143,380730,697480,518759,492216,468645,467092,508737,267845,146849,101498,47152,675165,671332,535567,258020,45557,754830,726051,660591,665343,453423,495234,420419,296327,249935,264504,428321,576434,466013,325316,405316,218195,223410,269518,92047,756698,510979,19233,694288,651995,475069,186646,36509,756489,727423,703472,673192,581745,605394,613601,496980,315618,411712,74471,735103,39582,732950,701566,574582,516833,75188,13956,216670,97196,165847,753735,727732,521927,504255,503798,428465,387068,395229,35721,12098,751241,740437,628591,401132,296147,309165,135628,82945,740432,132286,659614,703652,586851,516715,441303,415646,514678,460050,751618,418461,316498,258009,254031,89641,141695,725439,581176,634610,532649,441519,256513,208296,289210,23883,753648,609305,529786,494171,357524,314967,88271,34290,411282,659616,695058,541118,495393,269575,122810,166525,44917,761488,733726,655610,597129,184370,51779,645389,634353,528658,426072,97118,44442,761972,762003,697450,661048,652450,630410,578766,573321,360875,761268,761973,646149,612553,586470,520572,494531,336481,352675,199803,151900,16861,761990,749670,344519,578768,140030,104824,637334,692471,710048,697452,603135,542948,523084,474291,413657,256424,102871,83752,124924,24871,762939,734988,726052,744846,697479,687415,356847,332875,121566,185943,34632,734619,680378,704229,690456,627317,520573,459028,455452,201510,247389,294280,79620,158746,15135,50048,763982,741049,249968,732815,543583,547102,431950,3518,17722,761994,708688,652451,499903,357523,159955,64891,31768,216015,415647,234062,159042,151130,157849,158248,761261,619299,663844,594447,522873,515715,159952,20736,27225,762938,570829,666713,654357,637915,519047,159885,87126,541325,504779,388371,375125,300843,280995,31276,632478,524698,439594,250507,101298,68015,418821,125110,659631,697447,578767,635117,636686,550856,761263,552369,753464,740625,650684,615528,552408,524212,226215,218177,14090,761978,573371,552409,408645,314415,86285,12196,31113,41575,37733,738095,696998,673718,616529,468722,485996,314638,5484,36341,461970,483322,507797,150616,4481,755215,664301,659612,693803,698058,562667,316618,401261,265703,101332,158773,16362,11065,19047,521783,717106,523818,543575,473256,317612,294880,92757,743815,102319,571393,576617,523675,565834,511524,410790,426568,241158,148079,729444,499752,479761,148082,65003,15555,179208,78342,733517,749730,552744,219115,761983,764043,681920,703470,611951,516141,460807,267434,637332,598810,710049,671333,506588,435383,11698,653254,357336,299482,203039,638195,626910,212112,27004,36363,479658,478102,243439,158750,11044,674314,732729,658025,573573,443170,467596,330705,424116,305196,12013,551566,653893,727007,614491,493908,506578,510568,322225,732086,686493,673191,488812,253770,149650,30729,33118,763331,497412,751693,740434,751242,732949,570822,644327,523671,306152,743826,260136,216006,222436,165440,685355,735340,602650,450453,414174,331545,371085,351456,66689,747254,724040,701685,513837,566719,320955,351973,26020,621375,527098,745570,59508,651488,378498,436689,75211,344348,747938,735746,575601,381615,415391,184831,52179,58991,756306,703312,607033,638926,559916,486852,507026,285713,309001,102110,1302,618752,554507,555550,529811,602648,553892,541865,364745,144067,765350,637331,743816,46566,724483,660533,656536,659994,703309,578995,565113,554814,473192,460249,372355,238697,141407,751760,105156,712916,697453,644918,532651,354191,218146,211349,44722,44441,45317)

group by c.DateX, c.WarehouseId, c.GoodsId
having sum(c.Quantity)>0)

select CTEa.WarehouseId, CTEa.GoodsId, CTEa.CreditQuantity
from CTEa
where rn=10


Сообщение было отредактировано: 25 июл 18, 18:02
25 июл 18, 17:57    [21602242]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация sql запроса  [new]
framework
Member

Откуда:
Сообщений: 16
вот сама вьюха

К сообщению приложен файл. Размер - 84Kb
25 июл 18, 18:01    [21602264]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация sql запроса  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
framework,

определения таблиц, участвующих в выборке, схему их индексации, состав и количество данных, план выполнения запроса - предлагается угадать?

Если да, то"ошибка в 17-й строке, правильный ответ - 42"(с) (с простор форума)
25 июл 18, 18:05    [21602277]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация sql запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30764
framework
вот сама вьюха
Лучше план выложите, вместо картинки :-)

Селективность какая по c.WhatBase, c.WarehouseId, c.GoodsId ?
Если низкая, то ничего не сделать, ну, разве кластерный индекс по DateX поможет (но ухудшит другое).
25 июл 18, 18:08    [21602288]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация sql запроса  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
Щукина Анна,

+ текст вьюхи.

Без этого любой совет - "гадание на кофейной гуще пальцем в небе" :)
25 июл 18, 18:15    [21602304]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация sql запроса  [new]
framework
Member

Откуда:
Сообщений: 16
alexeyvg,

Вот план запроса.

Модератор: Вложение удалено.


Сообщение было отредактировано: 25 июл 18, 18:20
25 июл 18, 18:16    [21602307]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация sql запроса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36692
Модератор: Снес это издевательство. Потрудитесь приложить план в нормальном xml-виде.
25 июл 18, 18:21    [21602325]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация sql запроса  [new]
framework
Member

Откуда:
Сообщений: 16
Размер приложенного файла превышен,План выполнения в xml по ссылке
https://drive.google.com/open?id=1dd2xvAFJtPlbuwnYTSXBy1pTh_DAaUQM
25 июл 18, 18:39    [21602361]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация sql запроса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36692
framework,

Zip? Нет, не слышал.

К сообщению приложен файл (План выполнения xml.zip - 39Kb) cкачать

Сообщение было отредактировано: 25 июл 18, 18:54
25 июл 18, 18:54    [21602416]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация sql запроса  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
framework,

Учитывая что у вас вью, а текста вы не приложили, то остается только полагаться на то что вам сервер посоветовал. Missing Index из плана я так понимаю вы не смотрели?

USE [Mark]
GO
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[Credit] ([GoodsId])
INCLUDE ([CreditGroupId],[WarehouseId],[Quantity])
GO

CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[CreditGroup] ([WhatBase], [Datex])
INCLUDE ([CreditGroupId])


Не уверен только насчет порядка [WhatBase], [Datex], возможно стоит поменять местами. Оба поля стоят в INEQUALITY и советчик не заморачивается, тупо ставит их в той же последовательности как и в таблице. Короче можно попробовать переставить местами. Но в любом случая данных очень много и запрос тяжелый, за 2 секунды работать не будет.
25 июл 18, 19:35    [21602523]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация sql запроса  [new]
framework
Member

Откуда:
Сообщений: 16
Текст вью

SELECT        dbo.CreditGroup.Datex, dbo.Credit.WarehouseId, dbo.CreditGroup.WhatBase, dbo.Credit.GoodsId, SUM(dbo.Credit.Quantity) AS Quantity, SUM(dbo.Credit.Summ) AS Summ, 
                         SUM(dbo.Credit.Quantity * dbo.Credit.Price_2) AS Sum2, SUM(ISNULL(dbo.Credit.Sum3, 0)) AS Sum3, SUM(dbo.Credit.CountMen) AS CountMen, COUNT_BIG(*) AS RecordCount
FROM            dbo.CreditGroup INNER JOIN
                         dbo.Credit ON dbo.CreditGroup.CreditGroupId = dbo.Credit.CreditGroupId
GROUP BY dbo.CreditGroup.Datex, dbo.Credit.WarehouseId, dbo.Credit.GoodsId, dbo.CreditGroup.WhatBase


Прошу прощения, что сразу не предоставил всех данных
26 июл 18, 09:22    [21603206]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить