powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / В плане: Clustered Index Scan и пишут, что это плохо
17 сообщений из 17, страница 1 из 1
В плане: Clustered Index Scan и пишут, что это плохо
    #40051135
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На таком запросе в процедуре

Код: sql
1.
2.
3.
	
        insert into z2(id,zorder, zid2)
	SELECT id,zorder,zid	from  @tmp_z2;


получаю среди прочего Clustered Index Scan на выборке SELECT id,zorder,zid from @tmp_z2

Эта переменная таблица объявлена так:

Код: sql
1.
2.
3.
4.
5.
6.
declare @tmp_z2 table
(
	id	uniqueidentifier NOT NULL PRIMARY KEY ,
	zid	uniqueidentifier NOT NULL ,
        zorder bigint
)




Я думал, что первичного ключа хватит, тем более, что выборка не делается, а вся таблица вливается в основную.
Там записей до 500-1000
Как изменить план, заодно и ускорить вставку?
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051136
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
На таком запросе в процедуре

Код: sql
1.
2.
3.
	
        insert into z2(id,zorder, zid2)
	SELECT id,zorder,zid	from  @tmp_z2;


получаю среди прочего Clustered Index Scan на выборке SELECT id,zorder,zid from @tmp_z2

Эта переменная таблица объявлена так:

Код: sql
1.
2.
3.
4.
5.
6.
declare @tmp_z2 table
(
	id	uniqueidentifier NOT NULL PRIMARY KEY ,
	zid	uniqueidentifier NOT NULL ,
        zorder bigint
)




Я думал, что первичного ключа хватит, тем более, что выборка не делается, а вся таблица вливается в основную.
Там записей до 500-1000
Как изменить план, заодно и ускорить вставку?


в @таблице до недавнего времени (sql2019) подразумевалась одна запись
кроме того, у вас выборка всей таблицы - что там еще может быть кроме скана?

попробуйте с #таблицей, но, исходя из вводной информации, мало что изменится
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051137
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad
Ролг Хупин
На таком запросе в процедуре

Код: sql
1.
2.
3.
	
        insert into z2(id,zorder, zid2)
	SELECT id,zorder,zid	from  @tmp_z2;


получаю среди прочего Clustered Index Scan на выборке SELECT id,zorder,zid from @tmp_z2

Эта переменная таблица объявлена так:

Код: sql
1.
2.
3.
4.
5.
6.
declare @tmp_z2 table
(
	id	uniqueidentifier NOT NULL PRIMARY KEY ,
	zid	uniqueidentifier NOT NULL ,
        zorder bigint
)




Я думал, что первичного ключа хватит, тем более, что выборка не делается, а вся таблица вливается в основную.
Там записей до 500-1000
Как изменить план, заодно и ускорить вставку?


в @таблице до недавнего времени (sql2019) подразумевалась одна запись
кроме того, у вас выборка всей таблицы - что там еще может быть кроме скана?

попробуйте с #таблицей, но, исходя из вводной информации, мало что изменится


обана!
а можно расшифровать для чяйников, а то как-то ошарашила новость. Реально до SQL 2019 в @ таблице одна запись ?

у меня влезало дофига и в 2016...
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051138
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
komrad
пропущено...


в @таблице до недавнего времени (sql2019) подразумевалась одна запись
кроме того, у вас выборка всей таблицы - что там еще может быть кроме скана?

попробуйте с #таблицей, но, исходя из вводной информации, мало что изменится


обана!
а можно расшифровать для чяйников, а то как-то ошарашила новость. Реально до SQL 2019 в @ таблице одна запись ?

у меня влезало дофига и в 2016...

ну, например :
https://www.red-gate.com/simple-talk/sql/performance/improve-row-count-estimates-for-table-variables-without-changing-code/
A table variable is defined using a DECLARE statement in a batch or stored procedure. Table variables don’t have distribution statistics and don’t trigger recompiles. Because of this, SQL Server is not able to estimate the number of rows in a table variable like it does for normal tables. When the optimizer compiles code that contains a table variable, prior to 15.x, it assumes a table is empty. This assumption causes the optimizer to compile the query using an expected row count of 1 for the cardinality estimate for a table variable.
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051139
londinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторРеально до SQL 2019 в @ таблице одна запись?
Я думаю, имелось в виду, что оптимизатор до 2019 SQL Server полагал, что в табличной переменной сидит одна запись, а напихать их туда можно и миллион
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051141
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин

у меня влезало дофига и в 2016...

подразумевалось!=влезало
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051146
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad
Ролг Хупин

у меня влезало дофига и в 2016...

подразумевалось!=влезало


вроде бы отлегло, но остался червь сомнений
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051221
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

сейчас оптимизатор оценивает как 100 записей. Табличные переменные нет смысла использовать для ускорения запросов, только головняк от этого.
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051224
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

«Сейчас» - это sql2019
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051256
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недоумение. Как можно вообще ускорить запрос, который выбирает все поля всех записей таблицы?
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051322
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Недоумение. Как можно вообще ускорить запрос, который выбирает все поля всех записей таблицы?

Уменьшить объемы данных в таблице.
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051539
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Недоумение. Как можно вообще ускорить запрос, который выбирает все поля всех записей таблицы?


аналогичное недоумение.
Как говорил один персонаж : "Кабы при моей работе бабы не нужны были, я бы с ними слова не сказал." (ц)
Вот и в моем случае, просматривая явно плохой план, казалось бы, простого запроса - перекидывания небольшого множества записей из временной таблицы в постоянную, и вот, завелся, что можно оптимизировать по всему плану.
Вижу несколько странных мест, вот одно из них.
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051659
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о боже,
это же из серии "жить вообще вредно".
скан это плохо.
но выбрать **все** без скана невозможно.
не надо циклиться на том, где вариантов просто нет

авторКак изменить план, заодно и ускорить вставку?

ну, если ПК там только для красоты,
не делай его вообще.
при заполнении переменной не надо будет сортировать гуиды,
а вместо Clustered Index Scan будет Table Scan,
вот и смена плана
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051723
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
просматривая явно плохой план

А как ты определяешь что он "явно плохой"?
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051735
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123
ну, если ПК там только для красоты,
не делай его вообще.

Я что-то вообще сомневаюсь, что на таблице в 500 записей по 96 байт когда-либо будет использоваться хоть какой-то индекс.
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051911
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Ролг Хупин
просматривая явно плохой план

А как ты определяешь что он "явно плохой"?


Злые люди пишут такое, вот тут, например:

https://www.sqlshack.com/sql-server-query-execution-plan-beginners-clustered-index-operators/#:~:text=Clustered index scan&text=Good or bad: If I,Index Scan, can degrade performance.
...
Рейтинг: 0 / 0
В плане: Clustered Index Scan и пишут, что это плохо
    #40051918
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Yasha123
ну, если ПК там только для красоты,
не делай его вообще.

Я что-то вообще сомневаюсь, что на таблице в 500 записей по 96 байт когда-либо будет использоваться хоть какой-то индекс.

смешно.
ПК вешают для обеспечения уникальности.
хоть там и 2 строки будет,
ПК есть -> уникальность проверяется, нету - не проверяется.
"для красоты" имелось в виду нвесили "для порядка",
а сами генерим строки с newid() и повторений точно не будет
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / В плане: Clustered Index Scan и пишут, что это плохо
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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