Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Почему Index Scan, а не Index Seek.
|
|||
|---|---|---|---|
|
#18+
Привет всем. Есть локальная база данных. Есть скрипт. Есть покрывающий индекс по таблице [Temp_Player_Points_ATP_1990_0.21]. Как видно в плане выполнения запроса идет Index Scan. Почему не Index Seek? Ниже представлены: Выполняемый скрипт Ключи к таблицам из скрипта План выполнения запроса в текстовом виде Таблица к плану выполнения запроса Помогите, пожалуйста. Выполняемый скрипт Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Ключи для таблицы [Games_ATP_1990_0.21] Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Ключи для таблицы [Temp_Player_Points_ATP_1990_0.21] Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Поле StmtText. Текстовый план выполнения запроса. Дополнительные поля к плану выполнения смотрите ниже Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Дополнительные поля к плану выполнения RowsExecutesStmtTextStmtIdNodeIdParentPhysicalOpLogicalOpArgumentDefinedValuesEstimateRowsEstimateIOEstimateCPUAvgRowSizeTotalSubtreeCostOutputListWarningsTypeParallelEstimateExecutions70039611.110NULLNULLNULLNULL700396NULLNULLNULL15.97539NULLNULLSELECT0NULL70039612.121ParallelismGather StreamsNULLNULL70039600.28546877715.97539[g].[id_t_g] [g].[id_r_g] [g].[id1_g] [g].[id2_g] [g].[points_c1_p] [g].[points_r1_p] [g].[points_c2_p] [g].[points_r2_p] [p1].[pointsC_avg_all] [p1].[pointsR_avg_all] [p2].[pointsC_avg_all] [p2].[pointsR_avg_all]NULLPLAN_ROW11700396643.132Hash MatchInner JoinHASH:([p2].[npp] [g].[id1_g])=([p1].[npp] [p1].[id_p]) RESIDUAL:([win-win.sys.Tennis].[dbo].[Temp_Player_Points_ATP_1990_0.21].[npp] as [p2].[npp]=[win-win.sys.Tennis].[dbo].[Temp_Player_Points_ATP_1990_0.21].[npp] as [p1].[npp] AND [win-win.sys.Tennis].[dbo].[Games_ATP_1990_0.21].[id1_g] as [g].[id1_g]=[win-win.sys.Tennis].[dbo].[Temp_Player_Points_ATP_1990_0.21].[id_p] as [p1].[id_p])NULL70039602.3072327715.68992[g].[id_t_g] [g].[id_r_g] [g].[id1_g] [g].[id2_g] [g].[points_c1_p] [g].[points_r1_p] [g].[points_c2_p] [g].[points_r2_p] [p1].[pointsC_avg_all] [p1].[pointsR_avg_all] [p2].[pointsC_avg_all] [p2].[pointsR_avg_all]NULLPLAN_ROW11700396644.143BitmapBitmap CreateHASH:([p2].[npp] [g].[id1_g])[Bitmap1004]70039600.2827602719.979099[g].[id_t_g] [g].[id_r_g] [g].[id1_g] [g].[id2_g] [g].[points_c1_p] [g].[points_r1_p] [g].[points_c2_p] [g].[points_r2_p] [p2].[npp] [p2].[pointsC_avg_all] [p2].[pointsR_avg_all]NULLPLAN_ROW11700396645.154ParallelismRepartition StreamsPARTITION COLUMNS:([p2].[npp] [g].[id1_g])NULL70039600.2827602719.979099[g].[id_t_g] [g].[id_r_g] [g].[id1_g] [g].[id2_g] [g].[points_c1_p] [g].[points_r1_p] [g].[points_c2_p] [g].[points_r2_p] [p2].[npp] [p2].[pointsC_avg_all] [p2].[pointsR_avg_all]NULLPLAN_ROW11700396646.165Hash MatchInner JoinHASH:([g].[npp] [g].[id2_g])=([p2].[npp] [p2].[id_p]) RESIDUAL:([win-win.sys.Tennis].[dbo].[Games_ATP_1990_0.21].[npp] as [g].[npp]=[win-win.sys.Tennis].[dbo].[Temp_Player_Points_ATP_1990_0.21].[npp] as [p2].[npp] AND [win-win.sys.Tennis].[dbo].[Games_ATP_1990_0.21].[id2_g] as [g].[id2_g]=[win-win.sys.Tennis].[dbo].[Temp_Player_Points_ATP_1990_0.21].[id_p] as [p2].[id_p])NULL70039602.130882719.69634[g].[id_t_g] [g].[id_r_g] [g].[id1_g] [g].[id2_g] [g].[points_c1_p] [g].[points_r1_p] [g].[points_c2_p] [g].[points_r2_p] [p2].[npp] [p2].[pointsC_avg_all] [p2].[pointsR_avg_all]NULLPLAN_ROW11700396647.176BitmapBitmap CreateHASH:([g].[npp] [g].[id2_g])[Bitmap1003]70039600.2465147614.161869[g].[npp] [g].[id_t_g] [g].[id_r_g] [g].[id1_g] [g].[id2_g] [g].[points_c1_p] [g].[points_r1_p] [g].[points_c2_p] [g].[points_r2_p]NULLPLAN_ROW11700396648.187ParallelismRepartition StreamsPARTITION COLUMNS:([g].[npp] [g].[id2_g])NULL70039600.2465147614.161869[g].[npp] [g].[id_t_g] [g].[id_r_g] [g].[id1_g] [g].[id2_g] [g].[points_c1_p] [g].[points_r1_p] [g].[points_c2_p] [g].[points_r2_p]NULLPLAN_ROW11700396649.198Index ScanIndex ScanOBJECT:([win-win.sys.Tennis].[dbo].[Games_ATP_1990_0.21].[IDX_1] AS [g])[g].[npp] [g].[id_t_g] [g].[id_r_g] [g].[id1_g] [g].[id2_g] [g].[points_c1_p] [g].[points_r1_p] [g].[points_c2_p] [g].[points_r2_p]7003963.8912730.02408102613.915354[g].[npp] [g].[id_t_g] [g].[id_r_g] [g].[id1_g] [g].[id2_g] [g].[points_c1_p] [g].[points_r1_p] [g].[points_c2_p] [g].[points_r2_p]NULLPLAN_ROW117054266410.1106ParallelismRepartition StreamsPARTITION COLUMNS:([p2].[npp] [p2].[id_p])NULL140079200.2500768253.403581[p2].[id_p] [p2].[npp] [p2].[pointsC_avg_all] [p2].[pointsR_avg_all]NULLPLAN_ROW117054266411.11110Index ScanIndex ScanOBJECT:([win-win.sys.Tennis].[dbo].[Temp_Player_Points_ATP_1990_0.21].[IDX_1] AS [p2]) WHERE:(PROBE([Bitmap1003][win-win.sys.Tennis].[dbo].[Temp_Player_Points_ATP_1990_0.21].[npp] as [p2].[npp][win-win.sys.Tennis].[dbo].[Temp_Player_Points_ATP_1990_0.21].[id_p] as [p2].[id_p]))[p2].[id_p] [p2].[npp] [p2].[pointsC_avg_all] [p2].[pointsR_avg_all]14007923.1053470.04815713253.153504[p2].[id_p] [p2].[npp] [p2].[pointsC_avg_all] [p2].[pointsR_avg_all]NULLPLAN_ROW117054846412.1123ParallelismRepartition StreamsPARTITION COLUMNS:([p1].[npp] [p1].[id_p])NULL140079200.2500768253.403581[p1].[id_p] [p1].[npp] [p1].[pointsC_avg_all] [p1].[pointsR_avg_all]NULLPLAN_ROW117054846413.11312Index ScanIndex ScanOBJECT:([win-win.sys.Tennis].[dbo].[Temp_Player_Points_ATP_1990_0.21].[IDX_1] AS [p1]) WHERE:(PROBE([Bitmap1004][win-win.sys.Tennis].[dbo].[Temp_Player_Points_ATP_1990_0.21].[npp] as [p1].[npp][win-win.sys.Tennis].[dbo].[Temp_Player_Points_ATP_1990_0.21].[id_p] as [p1].[id_p]))[p1].[id_p] [p1].[npp] [p1].[pointsC_avg_all] [p1].[pointsR_avg_all]14007923.1053470.04815713253.153504[p1].[id_p] [p1].[npp] [p1].[pointsC_avg_all] [p1].[pointsR_avg_all]NULLPLAN_ROW11 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 13:03 |
|
||
|
Почему Index Scan, а не Index Seek.
|
|||
|---|---|---|---|
|
#18+
Расставьте forceseek в ожидаемых местах поиска по индексу и сравните стоимость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 13:29 |
|
||
|
Почему Index Scan, а не Index Seek.
|
|||
|---|---|---|---|
|
#18+
Win-Win.SysКак видно в плане выполнения запроса идет Index Scan. Почему не Index Seek?Потому что для Hash Match нужны все значения (Index Scan), а не некоторые (Index Seek). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2019, 14:48 |
|
||
|
Почему Index Scan, а не Index Seek.
|
|||
|---|---|---|---|
|
#18+
Win-Win.Sys, 1. В табличке Temp_Player_Points_ATP_1990_0.21 содержится 1 млн 400.792 под условие (p1 on g.npp = p1.npp and g.id1_g = p1.id_p и p2 on g.npp = p2.npp and g.id2_g = p2.id_p) попадает 705 тыс 484 записей как для алиаса p1 так и для p2. Т.е. ровно половина от таблички! Какой тут может быть Index Seek! 2. И наконец, результирующая выборка отбирает 700 тыс 396 записей, те убирает всего 5100 записей. Вполне логичный план. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2019, 08:26 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=86&tid=1687187]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 343ms |

| 0 / 0 |
