powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
25 сообщений из 25, страница 1 из 1
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812408
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно просто в колонке выставить 1, 2, 3, ....
Пока вижу только решение с курсором
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812410
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,
перенумеровать - это сделать апдейт в таблице?
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812411
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,

или же - перенумеровать лишь результат выборки?
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812412
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Аннаleonix,
перенумеровать - это сделать апдейт в таблице?

да
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812414
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Аннаleonix,

или же - перенумеровать лишь результат выборки?

Перенумеровать колонку в таблице которая храниться в базе.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812415
Добавляете новую колонку задаете для нее IDENTITY. Удаляете старую колонку (если критично), переименовываете новую на старую. Если с таблицей работают активно, то есть другие варианты.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812445
лолл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант:

Код: sql
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.
USE tempdb;
GO

BEGIN TRAN

CREATE TABLE test
(
  Id Int NULL
)

INSERT test
VALUES (NULL), (NULL), (NULL)

CREATE SEQUENCE TestSeq
 AS Int
 START WITH 1
 INCREMENT BY 1

ALTER TABLE test ADD CONSTRAINT DF_test_Id DEFAULT (NEXT VALUE FOR TestSeq) FOR Id

UPDATE test SET Id = DEFAULT

SELECT * FROM test

ROLLBACK
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812466
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо.
Пойду пробовать на копии.
Не знаю как 1С отреагирует на лишние колонки.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812484
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
WITH T AS (SELECT N=ROW_NUMBER()OVER(ORDER BY OrderField),* FROM TableName)
UPDATE T SET NumberField=N;

70 миллионов - не так уж и много. Ну подождёте какое-то время один раз...
Не вижу в этом трагедии.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812600
zzzzzzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812785
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отчитываюсь.
Колонку не удалось добавить. Система ругается что колонки нельзя создавать.


Запрос
Код: sql
1.
2.
WITH T AS (SELECT N=ROW_NUMBER() OVER(ORDER BY _fld223),* FROM [dbo].[_InfoRg222])
UPDATE T SET _fld224=N;


не удалось выполнить. После 10 часов работы вывалилась ошибка.

"The transaction log for database 'tempdb' is full due to 'ACTIVE_TRANSACTION'."

Похоже не хватила места на диске.

Можно ли этот запрос выполнять порциями?
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39812816
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonixКолонку не удалось добавить. Система ругается что колонки нельзя создавать.Сначала разберитесь с этим. Это полный абсурд (или у вас вообще мало прав доступа?).
Раз такое дело, оформляйте вопрос как положено (напишите здесь CREATE TABLE, создание связанных с таблицей объектов - индексов, триггеров, констрейнтов, сообщите версию сервера и т.д.).
Частями можно, но надо обеспечить, чтобы каждая следующая часть не содержала уже обработанные записи.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813089
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,

А давайте зададимся более базовым вопросом, а зачем такая нумерация?

И если вы хотите переименовать, то вам сложно сделать следующее?
1) Добавить новую колонку INT NULL
2) Порционно обновлять по TOP = 100000 за раз
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813116
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"The transaction log for database 'tempdb' is full due to 'ACTIVE_TRANSACTION'."

Подобное сообщение появляется при нехватке места лог файла базы tempdb. Так что да - либо закончилось место на диске, либо ограничен прирост файла и место в файле закончилось.

Нужно либо разбивать на части, либо увеличивать диск\убирать ограничение автопроста.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813120
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо.
Переосмыслил немного задачу. Переделал по другому.

Код: sql
1.
2.
3.
4.
5.
WITH T AS (
SELECT N=ROW_NUMBER() OVER(partition BY _fld223 ORDER BY _fld251),* 
FROM [dbo].[_InfoRg222] 
where SUBSTRING(_fld223,1,1)='0' )
UPDATE T SET _fld224=N;



_fld223 - гуид, там может быть 16 вариантов символов 0-f. Получается 16 примерно одинаковых порций по 4.5 млн.
Сейчас первая порция обрабатывается 3 часа.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813188
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonixВсем спасибо.
Переосмыслил немного задачу. Переделал по другому.

Код: sql
1.
2.
3.
4.
5.
WITH T AS (
SELECT N=ROW_NUMBER() OVER(partition BY _fld223 ORDER BY _fld251),* 
FROM [dbo].[_InfoRg222] 
where SUBSTRING(_fld223,1,1)='0' )
UPDATE T SET _fld224=N;




_fld223 - гуид, там может быть 16 вариантов символов 0-f. Получается 16 примерно одинаковых порций по 4.5 млн.
Сейчас первая порция обрабатывается 3 часа.Кстати, не зацикливайтесь на том, что я там предложил.
Почитайте здешний FAQ по этому вопросу (такая тема там есть).
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813280
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,

Может быть быстрее будет так:

создаёте новую таблицу копию существующей.
делаете insert select в нее с новой идентити.
профит.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813316
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(4335883 rows affected)

Первая порция отработала за 13 часов.
Осталось 15 порция.
Годится.
Это разовая операция.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813341
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,
исправь пока не поздно, а то не видать тебе нормальной нумерации:
Код: sql
1.
2.
3.
4.
5.
WITH T AS (
SELECT N=ROW_NUMBER() OVER(ORDER BY _fld223),* 
FROM [dbo].[_InfoRg222] )
UPDATE T SET _fld224=N
where SUBSTRING(_fld223,1,1)='0';
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813345
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kopellyleonix,
исправь пока не поздно, а то не видать тебе нормальной нумерации:
Код: sql
1.
2.
3.
4.
5.
WITH T AS (
SELECT N=ROW_NUMBER() OVER(ORDER BY _fld223),* 
FROM [dbo].[_InfoRg222] )
UPDATE T SET _fld224=N
where SUBSTRING(_fld223,1,1)='0';

Этого недостаточно.
Ведь так следующая порция опять пронумеруется с 1.
Надо прибавить к количеству уже пронумерованных записей.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813347
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapKopellyleonix,
исправь пока не поздно, а то не видать тебе нормальной нумерации:
Код: sql
1.
2.
3.
4.
5.
WITH T AS (
SELECT N=ROW_NUMBER() OVER(ORDER BY _fld223),* 
FROM [dbo].[_InfoRg222] )
UPDATE T SET _fld224=N
where SUBSTRING(_fld223,1,1)='0';


Этого недостаточно.
Ведь так следующая порция опять пронумеруется с 1.
Надо прибавить к количеству уже пронумерованных записей.Или каждый раз определять максимальный номер
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813350
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapЭтого недостаточно.
Ведь так следующая порция опять пронумеруется с 1.
Надо прибавить к количеству уже пронумерованных записей.
Уверен? По идее пронумеровываются все строки, а обновляются только по условию.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813355
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же писал что переосмыслил задачу.
Сначала хотел сквозную нумерацию.
Сейчас решил что в рамках поля _fld223.
Короче это таблица с историей изменений объектов.
_fld223 это гуид объекта.
_fld224 номер версии.
_fld251 дата изменения.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813357
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KopellyiapЭтого недостаточно.
Ведь так следующая порция опять пронумеруется с 1.
Надо прибавить к количеству уже пронумерованных записей.
Уверен? По идее пронумеровываются все строки, а обновляются только по условию.Возможно, я тут был неправ.
Но тогда как раз надо сделать, чтобы нумеровались только оставшиеся записи.
Это должно улучшить производительность.
...
Рейтинг: 0 / 0
Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
    #39813359
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonixСейчас решил что в рамках поля _fld223.

тогда должно быть
Код: sql
1.
(PARTITION BY _fld223 order by _fld251)
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как быстрее всего перенумеровать колонку в таблице из 70 млн строк?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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