Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
1

Долго выполняется Update по нулю строк (Where)

12.07.2020, 00:09. Показов 3886. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Есть таблица с несколькими миллионами записей. Есть поле Column1(float, NULL), в котором только у некоторых записей значение не NULL.
Стоит задача очистить поле Column1 (задать значение NULL) для всех записей.

Даже после того, как я задам это значение для всех записей, при повторном запуске UPDATE выполняется очень долго, хотя в таблице уже нет записей, которые нужно обновлять:
2,5 минуты:
T-SQL
1
UPDATE Data SET Column1 = null
2,5 минуты:
T-SQL
1
UPDATE Data SET Column1 = null WHERE Column1 is not null
При этом:
0 секунд:
T-SQL
1
SELECT * FROM Data WHERE Column1 is not null
По этому полю создан NONCLUSTERED COLUMNSTORE INDEX NCCI_Column1 ON dbo.DB1(Column1)

Пересоздание поля с пересозданием NONCLUSTERED COLUMNSTORE INDEX длится ещё дольше.

Используется MS SQL Server 2019. Уровень совместимости БД такой же.

Господа, подскажите почему так и что делать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2020, 00:09
Ответы с готовыми решениями:

Долго выполняется код.
Уважаемые форумчане, почему у меня тормозит этот немудреный код, хотя в листбоксе всего 490 строк,...

Долго выполняется setText
ну код не самый красивый, но щас дело в другом. в StringBuilde загружает файл моментально, но вот в...

Долго выполняется запрос к БД
Добрый день. Есть в БД табличка с 192 полями, в ней может быть около 100 тыс. записей. запрос...

Долго выполняется подключение к БД
Добрый день. Временами долго выполняется подключение? Раз в час может быть и чаще. Есть класс...

13
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,717
12.07.2020, 08:40 2
Del
0
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
12.07.2020, 08:56  [ТС] 3
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
Ну, во-первых, нужно писать is null, а не = null.
Вы имеете ввиду так? Что-то не выходит.
T-SQL
1
UPDATE Data SET Column1 is null
Сообщение 156, уровень 15, состояние 1, строка 1
Неправильный синтаксис около ключевого слова "is".
0
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,717
12.07.2020, 09:07 4
Патриарх, поэтому и удалил этот коммент сразу же, потому что невнимательно почитал запрос)
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
12.07.2020, 10:26 5
Патриарх, выполните в SSMS
T-SQL
1
2
3
set statistics xml on;
UPDATE Data SET Column1 = null WHERE Column1 is not null;
set statistics xml off;
И покажите получившийся xml.
0
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
12.07.2020, 11:16  [ТС] 6
Цитата Сообщение от invm Посмотреть сообщение
выполните в SSMS
Результат:
Кликните здесь для просмотра всего текста
XML
1
<ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.539" Build="15.0.2000.5"><BatchSequence><Batch><Statements><StmtSimple StatementText="UPDATE Data SET Column1 = null WHERE Column1 is not null" StatementId="1" StatementCompId="2" StatementType="UPDATE" RetrievedFromCache="true" StatementSubTreeCost="1598.12" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0xB1F58FD76CD887B2" QueryPlanHash="0x6F0DC1B6A2BD674F" CardinalityEstimationModelVersion="150" BatchModeOnRowStoreUsed="true"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="8" MemoryGrant="136" CachedPlanSize="32" CompileTime="70" CompileCPU="5" CompileMemory="456"><ThreadStat Branches="1" UsedThreads="8"><ThreadReservation NodeId="0" ReservedThreads="9"></ThreadReservation></ThreadStat><MissingIndexes><MissingIndexGroup Impact="99.7188"><MissingIndex Database="[Texts]" Schema="[dbo]" Table="[Data]"><ColumnGroup Usage="INEQUALITY"><Column Name="[Column1]" ColumnId="9"></Column></ColumnGroup></MissingIndex></MissingIndexGroup></MissingIndexes><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" RequiredMemory="136" DesiredMemory="136" RequestedMemory="136" GrantWaitTime="0" MaxQueryMemory="1505304" GrantedMemory="136" MaxUsedMemory="136"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="104857" EstimatedPagesCached="52428" EstimatedAvailableDegreeOfParallelism="4" MaxCompileMemory="4686072"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2020-07-12T11:08:40.33" ModificationCount="0" SamplingPercent="1.37612" Statistics="[_WA_Sys_00000009_403A8C7D]" Table="[Data]" Schema="[dbo]" Database="[Texts]"></StatisticsInfo></OptimizerStatsUsage><WaitStats><Wait WaitType="PAGEIOLATCH_SH" WaitTimeMs="1242346" WaitCount="15559"></Wait><Wait WaitType="MEMORY_ALLOCATION_EXT" WaitTimeMs="701" WaitCount="2115000"></Wait><Wait WaitType="LATCH_EX" WaitTimeMs="8" WaitCount="7"></Wait><Wait WaitType="CXPACKET" WaitTimeMs="1" WaitCount="9"></Wait></WaitStats><QueryTimeStats ElapsedTime="156039" CpuTime="5148"></QueryTimeStats><RelOp NodeId="1" PhysicalOp="Clustered Index Update" LogicalOp="Update" EstimateRows="1" EstimateIO="0.02" EstimateCPU="2e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="1598.12" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualElapsedms="156039" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Database="[Texts]" Schema="[dbo]" Table="[Data]" Index="[PK__Data__3214EC07BBFC4815]" IndexKind="Clustered" Storage="RowStore"></Object><Object Database="[Texts]" Schema="[dbo]" Table="[Data]" Index="[NCCI_Column1]" IndexKind="NonClustered" Storage="ColumnStore"></Object><SetPredicate><ScalarOperator ScalarString="[Texts].[dbo].[Data].[Column1] = [Expr1002]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Column1"></ColumnReference><ScalarOperator><Identifier><ColumnReference Column="Expr1002"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="2" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="1" EstimateIO="0" EstimateCPU="1e-07" AvgRowSize="23" EstimatedTotalSubtreeCost="1598.1" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Id"></ColumnReference><ColumnReference Column="Expr1002"></ColumnReference><ColumnReference Column="Expr1007"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualElapsedms="156039" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1"></RunTimeCountersPerThread></RunTimeInformation><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1007"></ColumnReference><ScalarOperator ScalarString="[Expr1007]"><Identifier><ColumnReference Column="Expr1007"></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="3" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="1" EstimateIO="0" EstimateCPU="1e-07" AvgRowSize="23" EstimatedTotalSubtreeCost="1598.1" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Id"></ColumnReference><ColumnReference Column="Expr1002"></ColumnReference><ColumnReference Column="Expr1007"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1007"></ColumnReference><ScalarOperator ScalarString="CASE WHEN [Expr1005] THEN (0) ELSE (1) END"><IF><Condition><ScalarOperator><Identifier><ColumnReference Column="Expr1005"></ColumnReference></Identifier></ScalarOperator></Condition><Then><ScalarOperator><Const ConstValue="(0)"></Const></ScalarOperator></Then><Else><ScalarOperator><Const ConstValue="(1)"></Const></ScalarOperator></Else></IF></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="1" EstimateIO="0" EstimateCPU="1e-07" AvgRowSize="20" EstimatedTotalSubtreeCost="1598.1" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Id"></ColumnReference><ColumnReference Column="Expr1002"></ColumnReference><ColumnReference Column="Expr1005"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1002"></ColumnReference><ScalarOperator ScalarString="NULL"><Const ConstValue="NULL"></Const></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="5" PhysicalOp="Parallelism" LogicalOp="Gather Streams" EstimateRows="1" EstimateIO="0" EstimateCPU="0.0285024" AvgRowSize="12" EstimatedTotalSubtreeCost="1598.1" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Id"></ColumnReference><ColumnReference Column="Expr1005"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualElapsedms="156039" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1"></RunTimeCountersPerThread></RunTimeInformation><Parallelism><RelOp NodeId="6" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="1" EstimateIO="0" EstimateCPU="2.5e-09" AvgRowSize="12" EstimatedTotalSubtreeCost="1598.07" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Batch"><OutputList><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Id"></ColumnReference><ColumnReference Column="Expr1005"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="8" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="7" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="6" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="5" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="4" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="3" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="2" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="1" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="0"></RunTimeCountersPerThread></RunTimeInformation><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1005"></ColumnReference><ScalarOperator ScalarString="CASE WHEN [Texts].[dbo].[Data].[Column1] IS NULL THEN (1) ELSE (0) END"><IF><Condition><ScalarOperator><Compare CompareOp="BINARY IS"><ScalarOperator><Identifier><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Column1"></ColumnReference></Identifier></ScalarOperator><ScalarOperator><Const ConstValue="NULL"></Const></ScalarOperator></Compare></ScalarOperator></Condition><Then><ScalarOperator><Const ConstValue="(1)"></Const></ScalarOperator></Then><Else><ScalarOperator><Const ConstValue="(0)"></Const></ScalarOperator></Else></IF></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="7" PhysicalOp="Clustered Index Scan" LogicalOp="Clustered Index Scan" EstimateRows="1" EstimatedRowsRead="6.46464e+06" EstimateIO="1596.21" EstimateCPU="1.77781" AvgRowSize="19" EstimatedTotalSubtreeCost="1597.99" TableCardinality="6.46464e+06" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Batch"><OutputList><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Id"></ColumnReference><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Column1"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="8" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="155722" ActualCPUms="658" ActualScans="1" ActualLogicalReads="280260" ActualPhysicalReads="0" ActualReadAheads="278682" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="834437" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="7" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="155681" ActualCPUms="632" ActualScans="1" ActualLogicalReads="269180" ActualPhysicalReads="0" ActualReadAheads="267573" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="801351" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="6" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="155863" ActualCPUms="652" ActualScans="1" ActualLogicalReads="269995" ActualPhysicalReads="0" ActualReadAheads="268332" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="803770" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="5" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="156039" ActualCPUms="665" ActualScans="1" ActualLogicalReads="271345" ActualPhysicalReads="0" ActualReadAheads="269689" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="807801" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="4" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="155636" ActualCPUms="644" ActualScans="1" ActualLogicalReads="265680" ActualPhysicalReads="0" ActualReadAheads="264233" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="790860" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="3" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="156024" ActualCPUms="662" ActualScans="1" ActualLogicalReads="271801" ActualPhysicalReads="0" ActualReadAheads="270200" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="809190" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="2" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="155452" ActualCPUms="613" ActualScans="1" ActualLogicalReads="268380" ActualPhysicalReads="0" ActualReadAheads="266848" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="798930" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="1" ActualRows="0" Batches="0" ActualExecutionMode="Batch" ActualElapsedms="155457" ActualCPUms="616" ActualScans="1" ActualLogicalReads="274855" ActualPhysicalReads="0" ActualReadAheads="273241" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="818298" ActualEndOfScans="0" ActualExecutions="1"></RunTimeCountersPerThread><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="0"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Id"></ColumnReference></DefinedValue><DefinedValue><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Column1"></ColumnReference></DefinedValue></DefinedValues><Object Database="[Texts]" Schema="[dbo]" Table="[Data]" Index="[PK__Data__3214EC07BBFC4815]" IndexKind="Clustered" Storage="RowStore"></Object><Predicate><ScalarOperator ScalarString="[Texts].[dbo].[Data].[Column1] IS NOT NULL"><Compare CompareOp="IS NOT"><ScalarOperator><Identifier><ColumnReference Database="[Texts]" Schema="[dbo]" Table="[Data]" Column="Column1"></ColumnReference></Identifier></ScalarOperator><ScalarOperator><Const ConstValue="NULL"></Const></ScalarOperator></Compare></ScalarOperator></Predicate></IndexScan></RelOp></ComputeScalar></RelOp></Parallelism></RelOp></ComputeScalar></RelOp></ComputeScalar></RelOp></ComputeScalar></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML>
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
12.07.2020, 12:51 7
Патриарх,

1. Сервер не умеет использовать кеолумнстор при отборе строк для апдейта, когда изменяется колонка, входящая в этот колумнстор. Поэтому, в отличие от селекта, сканируется кластерный, а не колумнстор.
2. В запросе ожиданий PAGEIOLATCH_SH почти на 2 минуты. Это говорит либо о проблемах с дисками, либо сиквелу выделено мало памяти.

ЗЫ: Обновите сиквел до последнего CU, а то у вас голый RTM.
1
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
12.07.2020, 13:17  [ТС] 8
Цитата Сообщение от invm Посмотреть сообщение
Обновите сиквел до последнего CU, а то у вас голый RTM.
Вкатил сейчас CU5. Теперь версия: 15.0.4043.16

Во время выполнения запроса файл БД читается с диска со скоростью 150 метров/с, забивая очередь диска на 100% (больше к этому диску никто не обращается).
Сиквелу назначено 8 Гб памяти (при размере БД 16Гб). При таком раскладе время выполнения: 2 минуты

Попробовал увеличить память до 20 Гб - повторный запуск выполняется мгновенно.
Можно как-то сказать сиквелу, что нужно держать в памяти только эту колонку?
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
12.07.2020, 13:42 9
Цитата Сообщение от Патриарх Посмотреть сообщение
Можно как-то сказать сиквелу, что нужно держать в памяти только эту колонку?
Нет.
0
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
12.07.2020, 13:44  [ТС] 10
Цитата Сообщение от invm Посмотреть сообщение
Нет.
Изменить кластерный индекс и нацелить на эту колонку?
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
12.07.2020, 13:52 11
Патриарх, задача какая? Зачем колумнстор?
0
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
12.07.2020, 14:16  [ТС] 12
Цитата Сообщение от invm Посмотреть сообщение
Патриарх, задача какая? Зачем колумнстор?
Я пытался ускорить получение Count и Max по колонке Column1 - благодаря колумнстору я получаю данные сильно быстрее, чем без него:
T-SQL
1
2
3
4
5
6
SELECT
    Count(*) AS 'All',
    SUM(CASE WHEN Column1 is not null THEN 1 ELSE 0 END) AS 'NotNull',
    SUM(CASE WHEN Column1 >= 0.5 THEN 1 ELSE 0 END) AS 'Type1',
    MAX(Column1) as 'MaxValue'
FROM Data
Задача - периодически очищать поле Column1 для всех записей в таблице и, желательно, делать это быстро. Потом это поле заполняется новыми значениями для тех же данных из других колонок.

Добавлено через 14 минут
Добавил ещё некластеризованный индекс по той же колонке Column1 и стало выполняться мгновенно при тех же 8ГБ памяти, выделенных на сервер:
T-SQL
1
CREATE NONCLUSTERED INDEX IX_Column1 ON Data (Column1);
Вроде всё круто.

Сейчас у таблицы 3 индекса:
T-SQL
1
2
3
Стандартный кластеризованный по id;
CREATE NONCLUSTERED COLUMNSTORE INDEX NCCI_Column1 ON dbo.Data(Column1);
CREATE NONCLUSTERED INDEX IX_Column1 ON Data (Column1);
0
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
12.07.2020, 14:16 13
Лучший ответ Сообщение было отмечено Патриарх как решение

Решение

Цитата Сообщение от Патриарх Посмотреть сообщение
Задача - периодически очищать поле Column1 для всех записей в таблице
Если таких записей много, то ускорить не выйдет.
Если мало, то сделайте обычный фильтрованный индекс
T-SQL
1
create INDEX NCCI_Column1__filtered ON dbo.DB1(Column1) where Column1 is not null
И, соответственно,
T-SQL
1
UPDATE Data SET Column1 = null WHERE Column1 is not null
1
12 / 12 / 0
Регистрация: 23.03.2009
Сообщений: 107
12.07.2020, 14:24  [ТС] 14
Исправил индекс в соответствии с рекомендациями. Всё круто. Спасибо.
0
12.07.2020, 14:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2020, 14:24
Помогаю со студенческими работами здесь

Долго выполняется цикл
Добрый день или вечер)) Есть цикл for, который выполняется в потоке. Он занимается заполнением...

Долго выполняется запрос
Приходят в GET слова для работы с БД, все работает хорошо, кроме одного словочитания, база данных...

Долго выполняется запрос
Всем привет. Довольно долго (порядка 30-40 секунд) выполняется запрос. Подскажите где, что...

Программа долго выполняется
Добрый день, товарищи. Написал прогу, кодирующую данные#include &lt;iostream&gt; #include&lt;fstream&gt;...

Запрос выполняется очень долго
Помагите оптимизировать запрос. Выполняется бесконечно долго (Запрос занял 95.9257 сек.) SELECT...

Долго выполняется программа и зависает
Программа на C# долго выполняется и зависает при вводе eps вот код: using System; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru