#sql #sql-server #database-administration
#sql #sql-server #администрирование базы данных
Вопрос:
Я работаю над индексацией и разделением таблиц базы данных. Но одна вещь, с которой я застрял: как индексирование и разделение работают вместе?
Например, у меня есть такая таблица:
CREATE TABLE Transactions
(
Id [bigint] IDENTITY(1,1) NOT NULL,
[TransactionNo] [varchar](50) NOT NULL,
[TransactionType] [varchar](2) NOT NULL,
[AccountId] [bigint] NOT NULL,
[Amount] [decimal](18, 2) NOT NULL,
[TransactionDate] [date] NOT NULL,
[TransactionTime] [time](7) NULL
)
Если я создам индекс Id
и раздел TransactionDate
, то как — за сценой — это будет работать? Будет ли TransactionDate
сначала создан раздел, а затем применен к индексу, или он просто сохранит индексацию такой, какая она есть, а затем применит раздел поверх этого?
Или, возможно, я воспринимаю всю индексацию и разделение совершенно неправильно!
Я думаю как об индексации, так и о разделении, потому что у меня есть таблица с огромным количеством данных, более 50 миллиардов (данные за 3 года) строк и 25 столбцов, большинство из которых либо DateTime
, numeric
либо несколько varchar
столбцов.
Каждый божий день в таблицу вставляется огромное количество строк. Пользователи могут выполнять операции поиска по дате транзакции и нескольким varchar
столбцам. Также эти данные я использую для отображения другой информации.
Из-за такого огромного объема данных время работы резко сокращается.
Я использую SQL Server 2017.
Любые указания или предложения будут высоко оценены.
Комментарии:
1. У вас могут быть оба индекса, выровненные по разделу (что означает, что они будут разделены в соответствии с разделяющим столбцом) или не выровненные (что означает, что они этого не делают). Как правило, вам нужны выровненные индексы, чтобы получить преимущества разделения, но некоторые меньшие или специализированные индексы могут выиграть от того, что они не выровнены. Это описано в документации , которую я рекомендую вам внимательно прочитать перед началом работы, поскольку настройка и поддержка разделения требуют некоторого обучения.