У меня есть вопрос, но позвольте мне сначала сказать, что это выполняется в базе данных, которую я унаследовал, и в настоящее время я пытаюсь улучшить дизайн. Также причиной синтаксиса является тот факт, что существует множество таблиц, в которых типы данных были «подправлены» специалистами службы технической поддержки (/ facepalm), что вызывает множество проблем.
IF NOT EXISTS(Select *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'RXINFO'
AND TABLE_SCHEMA = N'scriptassist'
AND COLUMN_NAME = N'Price')
BEGIN
Alter Table [scriptassist].[RXINFO] Add [Price] FLOAT
Print 'Price Field nonexistant creating this field'
END
ELSE
BEGIN
If Not Exists(Select *
From Information_Schema.Columns
Where Table_Name = N'RXINFO'
And Table_Schema = N'scriptassist'
And Column_Name = N'Price'
And DATA_Type = N'FLOAT'
AND IsNull(CHARACTER_MAXIMUM_LENGTH, 0) = 0)
BEGIN
Alter Table [scriptassist].[RXINFO] Alter Column Price FLOAT
Print 'Price Field needed type updating'
END
END
Это то, что я сейчас делаю, чтобы определить, нужно ли изменить или добавить столбец в базу данных. Однако даже в случае необходимости добавления, скажем, 3-4 столбцов в линейную базу данных 500K-750K, где таблица имеет ширину около 100 столбцов, я предполагаю, что для каждого столбца требуется от 15 до 20 минут *. 1004 *
То, что я сделал, чтобы попытаться ускорить его:
- Удалены индексы до, а затем повторно добавлены после
- однопользовательский режим
- обеспечивает отсутствие подключения к базе данных, кроме моей
Я до сих пор не чувствую, что это займет столько времени, сколько нужно, поэтому мой вопрос заключается в том, нужно ли мне явно добавлять NULL
после типа столбца, чтобы это работало так быстро, как мне кажется?