powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по плану выполнения
25 сообщений из 30, страница 1 из 2
Вопрос по плану выполнения
    #40060998
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день
Просьба по возможности разъяснить, или указать где посмотреть, а то может я просто заморочился на пустом месте.....

Версия сервера: Microsoft SQL Server 2008 R2 (SP3) - 10.50.6220.0 (X64)
Mar 19 2015 12:32:14
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )

Есть две таблицы (тестовые , сделанные с рабочих)
Основная таблица PlainList_new с записями, и перекрестная таблица для связи с другими таблицами
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
/*основная таблица*/
CREATE TABLE [PlainList_new](
	[PL_ID] [int] IDENTITY(1,1) primary key,	
	[PL_RegDate] [date] NULL
	)
Create Index IX_RegDate ON T1(regDate)
/*перекрестная таблица*/
CREATE TABLE T2(
	[id_key] [int] primary key,
	[id_ext_key] [int] NOT NULL,
)
Create Index IX_ext_key ON T2(id_ext_key)


Выполняется простой запрос:
Код: sql
1.
2.
3.
4.
 Select PL_ID,id_key from PlainList_new  Y
 INNER JOIN T2 T10
  ON Y.PL_ID =T10.id_key
   Where Y.PL_RegDate between '20210227' AND '20210228' 



Открываю план выполнения и выжу следующую картину:
Запрос возвращает из основной таблицы 170 строк, и тащит из перекрестной таблицы почти 570 000 строк.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
<?xml version="1.0" encoding="utf-16"?>
<ShowPlanXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.1" Build="10.50.6220.0" xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan">
  <BatchSequence>
    <Batch>
      <Statements>
        <StmtSimple StatementCompId="1" StatementEstRows="1392.27" StatementId="1" StatementOptmLevel="FULL" StatementSubTreeCost="2.76455" StatementText="Select PL_ID,id_key from rznz.PlainList_new  Y&#xD;&#xA; INNER JOIN T2 T10&#xD;&#xA;  ON Y.PL_ID =T10.id_key&#xD;&#xA;   Where Y.PL_RegDate between '20210227' AND '20210228' " StatementType="SELECT" QueryHash="0x5F36F91E7AD01BC0" QueryPlanHash="0x89B77B7322478069">
          <StatementSetOptions ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" NUMERIC_ROUNDABORT="false" QUOTED_IDENTIFIER="true" />
          <QueryPlan DegreeOfParallelism="1" MemoryGrant="1024" CachedPlanSize="24" CompileTime="3" CompileCPU="3" CompileMemory="288">
            <RelOp AvgRowSize="15" EstimateCPU="1.2059" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1392.27" LogicalOp="Inner Join" NodeId="0" Parallel="false" PhysicalOp="Merge Join" EstimatedTotalSubtreeCost="2.76455">
              <OutputList>
                <ColumnReference Database="[RossAccr]" Schema="[rznz]" Table="[PlainList_new]" Alias="[Y]" Column="PL_ID" />
                <ColumnReference Database="[RossAccr]" Schema="[dbo]" Table="[T2]" Alias="[T10]" Column="id_key" />
              </OutputList>
              <RunTimeInformation>
                <RunTimeCountersPerThread Thread="0" ActualRows="170" ActualEndOfScans="1" ActualExecutions="1" />
              </RunTimeInformation>
              <Merge ManyToMany="false">
                <InnerSideJoinColumns>
                  <ColumnReference Database="[RossAccr]" Schema="[dbo]" Table="[T2]" Alias="[T10]" Column="id_key" />
                </InnerSideJoinColumns>
                <OuterSideJoinColumns>
                  <ColumnReference Database="[RossAccr]" Schema="[rznz]" Table="[PlainList_new]" Alias="[Y]" Column="PL_ID" />
                </OuterSideJoinColumns>
                <Residual>
                  <ScalarOperator ScalarString="[RossAccr].[dbo].[T2].[id_key] as [T10].[id_key]=[RossAccr].[rznz].[PlainList_new].[PL_ID] as [Y].[PL_ID]">
                    <Compare CompareOp="EQ">
                      <ScalarOperator>
                        <Identifier>
                          <ColumnReference Database="[RossAccr]" Schema="[dbo]" Table="[T2]" Alias="[T10]" Column="id_key" />
                        </Identifier>
                      </ScalarOperator>
                      <ScalarOperator>
                        <Identifier>
                          <ColumnReference Database="[RossAccr]" Schema="[rznz]" Table="[PlainList_new]" Alias="[Y]" Column="PL_ID" />
                        </Identifier>
                      </ScalarOperator>
                    </Compare>
                  </ScalarOperator>
                </Residual>
                <RelOp AvgRowSize="11" EstimateCPU="0.0240167" EstimateIO="0.0112613" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1458.67" LogicalOp="Sort" NodeId="1" Parallel="false" PhysicalOp="Sort" EstimatedTotalSubtreeCost="0.041646">
                  <OutputList>
                    <ColumnReference Database="[RossAccr]" Schema="[rznz]" Table="[PlainList_new]" Alias="[Y]" Column="PL_ID" />
                  </OutputList>
                  <MemoryFractions Input="1" Output="1" />
                  <RunTimeInformation>
                    <RunTimeCountersPerThread Thread="0" ActualRebinds="1" ActualRewinds="0" ActualRows="212" ActualEndOfScans="1" ActualExecutions="1" />
                  </RunTimeInformation>
                  <Sort Distinct="false">
                    <OrderBy>
                      <OrderByColumn Ascending="true">
                        <ColumnReference Database="[RossAccr]" Schema="[rznz]" Table="[PlainList_new]" Alias="[Y]" Column="PL_ID" />
                      </OrderByColumn>
                    </OrderBy>
                    <RelOp AvgRowSize="11" EstimateCPU="0.00176153" EstimateIO="0.00460648" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1458.67" LogicalOp="Index Seek" NodeId="2" Parallel="false" PhysicalOp="Index Seek" EstimatedTotalSubtreeCost="0.00636801" TableCardinality="659996">
                      <OutputList>
                        <ColumnReference Database="[RossAccr]" Schema="[rznz]" Table="[PlainList_new]" Alias="[Y]" Column="PL_ID" />
                      </OutputList>
                      <RunTimeInformation>
                        <RunTimeCountersPerThread Thread="0" ActualRows="212" ActualEndOfScans="1" ActualExecutions="1" />
                      </RunTimeInformation>
                      <IndexScan Ordered="true" ScanDirection="FORWARD" ForcedIndex="false" ForceSeek="false" ForceScan="false" NoExpandHint="false">
                        <DefinedValues>
                          <DefinedValue>
                            <ColumnReference Database="[RossAccr]" Schema="[rznz]" Table="[PlainList_new]" Alias="[Y]" Column="PL_ID" />
                          </DefinedValue>
                        </DefinedValues>
                        <Object Database="[RossAccr]" Schema="[rznz]" Table="[PlainList_new]" Index="[IX_RegDate]" Alias="[Y]" IndexKind="NonClustered" />
                        <SeekPredicates>
                          <SeekPredicateNew>
                            <SeekKeys>
                              <StartRange ScanType="GE">
                                <RangeColumns>
                                  <ColumnReference Database="[RossAccr]" Schema="[rznz]" Table="[PlainList_new]" Alias="[Y]" Column="PL_RegDate" />
                                </RangeColumns>
                                <RangeExpressions>
                                  <ScalarOperator ScalarString="'2021-02-27'">
                                    <Const ConstValue="'2021-02-27'" />
                                  </ScalarOperator>
                                </RangeExpressions>
                              </StartRange>
                              <EndRange ScanType="LE">
                                <RangeColumns>
                                  <ColumnReference Database="[RossAccr]" Schema="[rznz]" Table="[PlainList_new]" Alias="[Y]" Column="PL_RegDate" />
                                </RangeColumns>
                                <RangeExpressions>
                                  <ScalarOperator ScalarString="'2021-02-28'">
                                    <Const ConstValue="'2021-02-28'" />
                                  </ScalarOperator>
                                </RangeExpressions>
                              </EndRange>
                            </SeekKeys>
                          </SeekPredicateNew>
                        </SeekPredicates>
                      </IndexScan>
                    </RelOp>
                  </Sort>
                </RelOp>
                <RelOp AvgRowSize="11" EstimateCPU="0.62721" EstimateIO="0.889792" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="570048" LogicalOp="Clustered Index Scan" NodeId="3" Parallel="false" PhysicalOp="Clustered Index Scan" EstimatedTotalSubtreeCost="1.517" TableCardinality="570048">
                  <OutputList>
                    <ColumnReference Database="[RossAccr]" Schema="[dbo]" Table="[T2]" Alias="[T10]" Column="id_key" />
                  </OutputList>
                  <RunTimeInformation>
                    <RunTimeCountersPerThread Thread="0" ActualRows="569789" ActualEndOfScans="0" ActualExecutions="1" />
                  </RunTimeInformation>
                  <IndexScan Ordered="true" ScanDirection="FORWARD" ForcedIndex="false" ForceSeek="false" ForceScan="false" NoExpandHint="false">
                    <DefinedValues>
                      <DefinedValue>
                        <ColumnReference Database="[RossAccr]" Schema="[dbo]" Table="[T2]" Alias="[T10]" Column="id_key" />
                      </DefinedValue>
                    </DefinedValues>
                    <Object Database="[RossAccr]" Schema="[dbo]" Table="[T2]" Index="[PK__T2__D496202D780AAFAB]" Alias="[T10]" IndexKind="Clustered" />
                  </IndexScan>
                </RelOp>
              </Merge>
            </RelOp>
          </QueryPlan>
        </StmtSimple>
      </Statements>
    </Batch>
  </BatchSequence>
</ShowPlanXML>



Вопрос в следующем почему оценочное количество строк, которые должны быть получены из нижней таблицы 570 000.
Что то несделано/ сделано неправильно в таблицах? Соединение идет по ключу и там и там PK.
Почему не применено никакой фильтрации на перекресной таблице( нижней таблице) и берутся все строки?
Возможно данное поведение нормально и нужно просто смириться?

Да, если изменить даты, так чтобы количество строк из основной таблицы уменьшилось до 94 то будет применен Nested Loop и из перекрестной будет взято 87 строк.
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061007
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей,

попробуйте обновить статистику на PlainList_new c фулсканом
у вас там переоценка идет (1459 vs 212)
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061033
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,

Сделал
Код: sql
1.
  Update Statistics rznz.PlainList_new  with fullscan

, ничего не поменялось.
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061037
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей,

а покажите
Код: sql
1.
dbcc show_statistics ('PlainList_new','IX_RegDate')
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061054
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,

Name Updated Rows Rows Sampled Steps Density Average key length String Index Filter Expression Unfiltered Rows
IX_RegDate Apr 9 2021 2:38PM 659996 659996 200 0,002736291 2,964673 NO NULL 659996

All density Average Length Columns
0,0007905138 2,964673 PL_RegDate

RANGE_HI_KEY RANGE_ROWS EQ_ROWS DISTINCT_RANGE_ROWS AVG_RANGE_ROWSNULL 0 7772 0 10201-04-04 0 2 0 11900-01-01 18 1847 6 32017-02-08 2083 249 137 15204382018-08-06 2760 496 250 11042018-10-23 1202 682 55 21854552018-12-22 2594 46 47 55191492019-01-10 2952 1056 14 21085712019-01-15 1964 946 3 65466672019-01-21 2433 905 5 48662019-01-24 1979 1041 2 98952019-01-29 1009 1217 4 252252019-01-31 1627 1219 1 16272019-02-05 1537 1189 3 51233332019-02-08 1884 1455 2 9422019-02-12 892 1480 2 4462019-02-19 3797 1128 4 949252019-02-26 3678 1573 4 91952019-02-27 0 1256 0 12019-03-04 1994 992 4 49852019-03-06 1210 1091 1 12102019-03-12 1840 1281 3 61333332019-03-18 2961 956 5 59222019-03-20 1281 1238 1 12812019-03-26 3010 1233 5 6022019-03-29 2249 968 2 112452019-04-03 2019 1156 3 6732019-04-09 2826 1253 4 70652019-04-16 3612 1202 6 6022019-04-18 1017 1196 1 10172019-04-23 1746 1278 3 5822019-04-25 1049 1175 1 10492019-05-06 3066 1546 8 383252019-05-13 2620 1366 3 87333332019-05-20 3872 1610 4 9682019-05-22 1263 1197 1 12632019-05-28 2671 1195 4 667752019-05-29 0 1130 0 12019-06-03 1987 1057 4 496752019-06-06 2135 1093 2 106752019-06-11 1861 1183 3 62033332019-06-14 1150 1061 2 5752019-06-18 1165 1033 3 38833332019-06-20 1153 1190 1 11532019-06-27 4036 1204 4 10092019-07-01 896 1250 3 29866672019-07-05 2953 871 3 98433332019-07-09 943 1267 3 31433332019-07-12 1907 740 2 95352019-07-17 1897 743 4 474252019-07-23 2877 1082 4 719252019-07-25 1157 1078 1 11572019-07-31 3003 1083 5 60062019-08-05 1952 918 4 4882019-08-08 1979 1127 2 98952019-08-14 2876 1008 3 95866672019-08-20 2172 1452 5 43442019-08-27 3882 1175 5 77642019-08-29 996 1119 1 9962019-09-05 3792 943 5 75842019-09-11 2907 1168 3 9692019-09-19 2465 1840 7 35214292019-09-23 1948 1074 3 64933332019-09-25 1315 1252 1 13152019-09-30 2924 1662 4 7312019-10-04 3190 1384 3 10633332019-10-08 1622 1167 3 54066672019-10-11 1991 954 2 99552019-10-16 2682 1169 4 67052019-10-18 1495 1117 1 14952019-10-24 3620 1547 3 12066672019-10-29 2662 1616 4 66552019-11-01 1297 2070 2 64852019-11-05 513 1468 2 25652019-11-08 3162 1484 2 15812019-11-13 1954 1998 3 65133332019-11-15 1468 1149 1 14682019-11-19 1572 1590 1 15722019-11-21 1211 1169 1 12112019-11-25 1198 1282 3 39933332019-11-27 1355 1294 1 13552019-12-15 545 12508 1 5452019-12-31 21 14407 4 5252020-01-13 2915 1033 12 24291672020-01-16 1709 1078 2 85452020-01-22 2512 839 5 50242020-01-27 1505 964 4 376252020-01-29 842 803 1 8422020-02-03 1817 1045 4 454252020-02-07 2750 748 3 91666672020-02-11 985 1054 3 32833332020-02-17 2441 836 5 48822020-02-19 913 955 1 9132020-02-25 1689 1185 5 33782020-02-28 2065 1056 2 103252020-03-04 1978 1024 4 49452020-03-10 1811 1270 5 36222020-03-17 3838 1085 6 63966672020-03-23 3059 1276 5 61182020-03-27 3974 1162 3 13246672020-03-31 1505 1471 3 50166672020-04-02 1267 1190 1 12672020-04-06 939 1486 3 3132020-04-08 1523 1315 1 15232020-04-13 2182 1394 4 54552020-04-15 1361 1471 1 13612020-04-17 1279 1086 1 12792020-04-21 1345 1293 3 44833332020-04-23 1120 1132 1 11202020-04-27 1292 1431 3 43066672020-04-30 3047 1795 2 152352020-05-06 451 1714 5 9022020-05-08 1624 1548 1 16242020-05-12 148 1520 3 49333332020-05-14 1500 1387 1 15002020-05-18 1349 1630 3 44966672020-05-20 1532 1354 1 15322020-05-25 2691 1317 4 672752020-05-27 1487 1621 1 14872020-05-29 1223 1396 1 12232020-06-03 2882 1201 4 72052020-06-08 2262 1261 4 56552020-06-10 1449 1166 1 14492020-06-15 1518 1191 4 37952020-06-17 1650 1434 1 16502020-06-19 1281 1283 1 12812020-06-23 1815 2012 3 6052020-06-26 2100 2185 2 10502020-06-29 357 2734 2 17852020-06-30 0 4781 0 12020-07-03 1033 1213 2 51652020-07-09 2873 808 5 57462020-07-14 1738 819 4 43452020-07-17 1343 761 2 67152020-07-22 1386 691 4 34652020-07-27 1397 707 4 349252020-07-30 1511 792 2 75552020-08-04 1615 787 4 403752020-08-07 1580 801 2 7902020-08-12 1714 957 4 42852020-08-17 1518 871 4 37952020-08-20 1822 850 2 9112020-08-25 1872 1104 4 4682020-08-31 3033 1239 5 60662020-09-03 1797 847 2 89852020-09-08 1939 1019 4 484752020-09-10 1208 1042 1 12082020-09-15 1973 1272 4 493252020-09-17 1043 1098 1 10432020-09-21 1010 1105 3 33666672020-09-25 3574 1075 3 11913332020-09-29 1447 1297 3 48233332020-10-01 1345 869 1 13452020-10-05 1013 1191 3 33766672020-10-08 2382 960 2 11912020-10-12 1367 1140 3 45566672020-10-15 2451 1122 2 122552020-10-19 1287 1114 3 4292020-10-21 1202 998 1 12022020-10-24 1988 61 2 9942020-10-29 3731 1010 4 932752020-11-02 1357 1025 3 45233332020-11-05 1569 1213 2 78452020-11-09 1762 1847 3 58733332020-11-11 1637 1694 1 16372020-11-14 2528 87 2 12642020-11-17 1265 1362 2 63252020-11-20 2528 1239 2 12642020-11-24 1723 1348 3 57433332020-11-27 2736 1183 2 13682020-12-01 1943 1209 3 64766672020-12-04 2438 1283 2 12192020-12-08 1700 1492 3 56666672020-12-11 2564 1249 2 12822020-12-15 1911 1444 3 6372020-12-18 2825 1432 2 141252020-12-22 1833 1647 3 6112020-12-25 2910 1267 2 14552020-12-29 2020 1354 3 67333332020-12-31 1628 477 1 16282021-01-11 2076 1414 10 20762021-01-14 2606 1143 2 13032021-01-19 2393 1186 4 598252021-01-22 2344 1195 2 11722021-01-26 1739 1418 3 57966672021-01-29 2417 1104 2 120852021-02-03 2944 1346 4 7362021-02-08 2324 1289 4 5812021-02-11 2622 1258 2 13112021-02-16 2557 1386 4 639252021-02-19 2615 1128 2 130752021-02-25 2857 1561 5 57142021-03-02 2735 1203 4 683752021-03-06 3742 65 3 12473332021-03-11 2968 1288 4 7422021-03-16 2645 1519 4 661252021-03-20 3493 123 3 11643332021-03-24 2799 1153 3 9332021-03-29 2388 1358 4 5972021-03-31 1297 1294 1 1297

Модератор: Освойте тег spoiler, пожалуйста.
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061055
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей,

Как то не читаемо получилось
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061056
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей,

Код: sql
1.
2.
3.
4.
5.
 Select PL_ID,id_key from PlainList_new  Y
 INNER JOIN T2 T10
  ON Y.PL_ID =T10.id_key
   Where Y.PL_RegDate between '20210227' AND '20210228' 
option (fast 100) 



план будет с NL?

c разными кстати вариантами попробуйте
fast 100
fast 300
fast 600
fast 1000

при каком пороге он переключится на MJ?
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061057
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь,


Name Updated Rows Rows Sampled Steps Density Average key length String Index Filter Expression Unfiltered Rows
IX_RegDate Apr 9 2021 2:38PM 659996 659996 200 0,002736291 2,964673 NO NULL 659996

All density Average Length Columns
0,0007905138 2,964673 PL_RegDate

RANGE_HI_KEY RANGE_ROWS EQ_ROWS DISTINCT_RANGE_ROWS AVG_RANGE_ROWS
NULL 0 7772 0 1
0201-04-04 0 2 0 1
1900-01-01 18 1847 6 3
2017-02-08 2083 249 137 15,20438
2018-08-06 2760 496 250 11,04
2018-10-23 1202 682 55 21,85455
2018-12-22 2594 46 47 55,19149
2019-01-10 2952 1056 14 210,8571
2019-01-15 1964 946 3 654,6667
2019-01-21 2433 905 5 486,6
2019-01-24 1979 1041 2 989,5
2019-01-29 1009 1217 4 252,25
2019-01-31 1627 1219 1 1627
2019-02-05 1537 1189 3 512,3333
2019-02-08 1884 1455 2 942
2019-02-12 892 1480 2 446
2019-02-19 3797 1128 4 949,25
2019-02-26 3678 1573 4 919,5
2019-02-27 0 1256 0 1
2019-03-04 1994 992 4 498,5
2019-03-06 1210 1091 1 1210
2019-03-12 1840 1281 3 613,3333
2019-03-18 2961 956 5 592,2
2019-03-20 1281 1238 1 1281
2019-03-26 3010 1233 5 602
2019-03-29 2249 968 2 1124,5
2019-04-03 2019 1156 3 673
2019-04-09 2826 1253 4 706,5
2019-04-16 3612 1202 6 602
2019-04-18 1017 1196 1 1017
2019-04-23 1746 1278 3 582
2019-04-25 1049 1175 1 1049
2019-05-06 3066 1546 8 383,25
2019-05-13 2620 1366 3 873,3333
2019-05-20 3872 1610 4 968
2019-05-22 1263 1197 1 1263
2019-05-28 2671 1195 4 667,75
2019-05-29 0 1130 0 1
2019-06-03 1987 1057 4 496,75
2019-06-06 2135 1093 2 1067,5
2019-06-11 1861 1183 3 620,3333
2019-06-14 1150 1061 2 575
2019-06-18 1165 1033 3 388,3333
2019-06-20 1153 1190 1 1153
2019-06-27 4036 1204 4 1009
2019-07-01 896 1250 3 298,6667
2019-07-05 2953 871 3 984,3333
2019-07-09 943 1267 3 314,3333
2019-07-12 1907 740 2 953,5
2019-07-17 1897 743 4 474,25
2019-07-23 2877 1082 4 719,25
2019-07-25 1157 1078 1 1157
2019-07-31 3003 1083 5 600,6
2019-08-05 1952 918 4 488
2019-08-08 1979 1127 2 989,5
2019-08-14 2876 1008 3 958,6667
2019-08-20 2172 1452 5 434,4
2019-08-27 3882 1175 5 776,4
2019-08-29 996 1119 1 996
2019-09-05 3792 943 5 758,4
2019-09-11 2907 1168 3 969
2019-09-19 2465 1840 7 352,1429
2019-09-23 1948 1074 3 649,3333
2019-09-25 1315 1252 1 1315
2019-09-30 2924 1662 4 731
2019-10-04 3190 1384 3 1063,333
2019-10-08 1622 1167 3 540,6667
2019-10-11 1991 954 2 995,5
2019-10-16 2682 1169 4 670,5
2019-10-18 1495 1117 1 1495
2019-10-24 3620 1547 3 1206,667
2019-10-29 2662 1616 4 665,5
2019-11-01 1297 2070 2 648,5
2019-11-05 513 1468 2 256,5
2019-11-08 3162 1484 2 1581
2019-11-13 1954 1998 3 651,3333
2019-11-15 1468 1149 1 1468
2019-11-19 1572 1590 1 1572
2019-11-21 1211 1169 1 1211
2019-11-25 1198 1282 3 399,3333
2019-11-27 1355 1294 1 1355
2019-12-15 545 12508 1 545
2019-12-31 21 14407 4 5,25
2020-01-13 2915 1033 12 242,9167
2020-01-16 1709 1078 2 854,5
2020-01-22 2512 839 5 502,4
2020-01-27 1505 964 4 376,25
2020-01-29 842 803 1 842
2020-02-03 1817 1045 4 454,25
2020-02-07 2750 748 3 916,6667
2020-02-11 985 1054 3 328,3333
2020-02-17 2441 836 5 488,2
2020-02-19 913 955 1 913
2020-02-25 1689 1185 5 337,8
2020-02-28 2065 1056 2 1032,5
2020-03-04 1978 1024 4 494,5
2020-03-10 1811 1270 5 362,2
2020-03-17 3838 1085 6 639,6667
2020-03-23 3059 1276 5 611,8
2020-03-27 3974 1162 3 1324,667
2020-03-31 1505 1471 3 501,6667
2020-04-02 1267 1190 1 1267
2020-04-06 939 1486 3 313
2020-04-08 1523 1315 1 1523
2020-04-13 2182 1394 4 545,5
2020-04-15 1361 1471 1 1361
2020-04-17 1279 1086 1 1279
2020-04-21 1345 1293 3 448,3333
2020-04-23 1120 1132 1 1120
2020-04-27 1292 1431 3 430,6667
2020-04-30 3047 1795 2 1523,5
2020-05-06 451 1714 5 90,2
2020-05-08 1624 1548 1 1624
2020-05-12 148 1520 3 49,33333
2020-05-14 1500 1387 1 1500
2020-05-18 1349 1630 3 449,6667
2020-05-20 1532 1354 1 1532
2020-05-25 2691 1317 4 672,75
2020-05-27 1487 1621 1 1487
2020-05-29 1223 1396 1 1223
2020-06-03 2882 1201 4 720,5
2020-06-08 2262 1261 4 565,5
2020-06-10 1449 1166 1 1449
2020-06-15 1518 1191 4 379,5
2020-06-17 1650 1434 1 1650
2020-06-19 1281 1283 1 1281
2020-06-23 1815 2012 3 605
2020-06-26 2100 2185 2 1050
2020-06-29 357 2734 2 178,5
2020-06-30 0 4781 0 1
2020-07-03 1033 1213 2 516,5
2020-07-09 2873 808 5 574,6
2020-07-14 1738 819 4 434,5
2020-07-17 1343 761 2 671,5
2020-07-22 1386 691 4 346,5
2020-07-27 1397 707 4 349,25
2020-07-30 1511 792 2 755,5
2020-08-04 1615 787 4 403,75
2020-08-07 1580 801 2 790
2020-08-12 1714 957 4 428,5
2020-08-17 1518 871 4 379,5
2020-08-20 1822 850 2 911
2020-08-25 1872 1104 4 468
2020-08-31 3033 1239 5 606,6
2020-09-03 1797 847 2 898,5
2020-09-08 1939 1019 4 484,75
2020-09-10 1208 1042 1 1208
2020-09-15 1973 1272 4 493,25
2020-09-17 1043 1098 1 1043
2020-09-21 1010 1105 3 336,6667
2020-09-25 3574 1075 3 1191,333
2020-09-29 1447 1297 3 482,3333
2020-10-01 1345 869 1 1345
2020-10-05 1013 1191 3 337,6667
2020-10-08 2382 960 2 1191
2020-10-12 1367 1140 3 455,6667
2020-10-15 2451 1122 2 1225,5
2020-10-19 1287 1114 3 429
2020-10-21 1202 998 1 1202
2020-10-24 1988 61 2 994
2020-10-29 3731 1010 4 932,75
2020-11-02 1357 1025 3 452,3333
2020-11-05 1569 1213 2 784,5
2020-11-09 1762 1847 3 587,3333
2020-11-11 1637 1694 1 1637
2020-11-14 2528 87 2 1264
2020-11-17 1265 1362 2 632,5
2020-11-20 2528 1239 2 1264
2020-11-24 1723 1348 3 574,3333
2020-11-27 2736 1183 2 1368
2020-12-01 1943 1209 3 647,6667
2020-12-04 2438 1283 2 1219
2020-12-08 1700 1492 3 566,6667
2020-12-11 2564 1249 2 1282
2020-12-15 1911 1444 3 637
2020-12-18 2825 1432 2 1412,5
2020-12-22 1833 1647 3 611
2020-12-25 2910 1267 2 1455
2020-12-29 2020 1354 3 673,3333
2020-12-31 1628 477 1 1628
2021-01-11 2076 1414 10 207,6
2021-01-14 2606 1143 2 1303
2021-01-19 2393 1186 4 598,25
2021-01-22 2344 1195 2 1172
2021-01-26 1739 1418 3 579,6667
2021-01-29 2417 1104 2 1208,5
2021-02-03 2944 1346 4 736
2021-02-08 2324 1289 4 581
2021-02-11 2622 1258 2 1311
2021-02-16 2557 1386 4 639,25
2021-02-19 2615 1128 2 1307,5
2021-02-25 2857 1561 5 571,4
2021-03-02 2735 1203 4 683,75
2021-03-06 3742 65 3 1247,333
2021-03-11 2968 1288 4 742
2021-03-16 2645 1519 4 661,25
2021-03-20 3493 123 3 1164,333
2021-03-24 2799 1153 3 933
2021-03-29 2388 1358 4 597
2021-03-31 1297 1294 1 1297

...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061058
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

нет, ровно тоже что и было
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061060
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

С остальными значениями все тоже самое
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061062
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей,

да, у вас слишком много уникальных дат для 200 шагов гистограммы
ради эксперимента попробуйте фильтрованный индекс

Код: sql
1.
Create Index IX_RegDate ON T1(regDate) where regDate>'20210101'
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061064
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей,

а если снизить планку до fast 50 или еще ниже fast 10?


еще такой вариант:
Код: sql
1.
2.
3.
4.
 Select PL_ID,id_key from PlainList_new  Y
 INNER JOIN T2 T10 with(forceseek)
  ON Y.PL_ID =T10.id_key
   Where Y.PL_RegDate between '20210227' AND '20210228' 




вообще странно у вас в диапазоне дат '20210227' AND '20210228' приблизительно 683,75 различных строки. странно что он для такого малого кол-ва решает что MJ выгодней.

я бы еще понял при условии что соединение было бы не по ПК
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061067
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей
Вопрос в следующем почему оценочное количество строк, которые должны быть получены из нижней таблицы 570 000.
Потому что оценка верхней таблицы ~1500 строк и оптимизатор счел, что NL + Key Lookup из нижней будет невыгодно и выбрал Merge.
Соответственно, будет читаться вся таблица на нижнем входе и поэтому такая оценка.
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061070
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

на Fast 10 начал использовать NL
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061071
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

вообще странно у вас в диапазоне дат '20210227' AND '20210228' приблизительно 683,75 различных строки.
В таблице на дату может быть несколько сотен строк. индекс IX_RegDate не уникальный.
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061072
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

Спасибо, понял.
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061073
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

а где там будет key lookup?

у него же там в запросе из второй только ключ кластерного выбирается.

c кардинальностью в 570048 имхо достаточно странно выглядит предположение что 1500 index seek будут дороже скана
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061074
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,

Спасибо, попробовал, соединяет с NL.
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061087
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
c кардинальностью в 570048 имхо достаточно странно выглядит предположение что 1500 index seek будут дороже скана
Если судить по данным ТС, в таблице Т2 будет примерно 600 страниц, и скан уже будет дешевле 1500 сиков, даже и без Key Lookup.
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061089
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей
komrad,

Спасибо, попробовал, соединяет с NL.

а с датами до 1 января 2021 соединяет по MJ?

если производительность устраивает, то можно фильтрованный и оставить
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061098
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,

а с датами до 1 января 2021 соединяет по MJ?
Да, тоже MJ.
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061102
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad


если производительность устраивает, то можно фильтрованный и оставить


ну или хинтовать запрос, как предложили выше
+ можно попробовать форсировать тип джойна, но это уже на любителя
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061120
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,

понял, спасибо.
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061137
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей
Спасибо, попробовал, соединяет с NL.
NL не всегда лучший вариант.
Фильтрованный индекс не всегда может задействоваться и их не настроишься для разных значений даты.

Я бы попробовал примерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with s as
(
 select
  c.id_key
 from
  (select top (1) PL_ID from PlainList_new where PL_RegDate >= '20210227' order by PL_RegDate, PL_ID) a(PL_ID__min) cross apply
  (select top (1) PL_ID from PlainList_new where PL_RegDate <= '20210228' order by PL_RegDate desc, PL_ID desc) b(PL_ID__max) join
  T2 c on c.id_key between a.PL_ID__min and b.PL_ID__max
)
select
 Y.PL_ID, T10.id_key
from
 PlainList_new Y join
 s T10 on Y.PL_ID = T10.id_key
where
 Y.PL_RegDate between '20210227' AND '20210228'


Тогда даже при merge не будет полного сканирования T2.
...
Рейтинг: 0 / 0
Вопрос по плану выполнения
    #40061601
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

Да, спасибо, мысли были выбрать Min и Max ID для диапазона. Буду пробовать.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по плану выполнения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]