Индекс производительности - PullRequest
1 голос
/ 04 июня 2009

У меня есть таблица с именем Transactions со следующей схемой:

ColumnName     DataType             Constraints
----------    ----------            -----------
   id             int           PK (Cluster-Index)
 details      varchar(50)

Позже я добавлю следующие две колонки в эту таблицу:

ColumnName     DataType             Constraints
----------    ----------            -----------
   id             int           PK (Cluster-Index)
 details      varchar(50)
  date          datetime 
 comment      varchar(255)

Какова будет производительность индекса для этой таблицы со следующим запросом?

select * from transactions where id=somenumber

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

Ответы [ 3 ]

3 голосов
/ 04 июня 2009

Ваша производительность будет примерно такой же. Ваш кластеризованный индекс определяет физический порядок строк. Когда вы делаете запрос по кластерному первичному ключу, база данных выполняет двоичный поиск ваших данных. Результат добавления столбцов означает, что на одной странице данных помещается не так много строк. Это означает, что базе данных, возможно, придется сделать немного больше операций ввода-вывода для получения тех же данных.

0 голосов
/ 22 февраля 2018

Без изменений, предоставленный вами пример запроса будет использовать поиск по индексу для перехода на страницу данных, содержащую нужную строку. Если бы в вашем запросе использовалось сканирование, вы бы, вероятно, увидели некоторую разницу во времени, в зависимости от того, сколько страниц листового уровня было отсканировано и насколько быстро работает ваша система хранения.

0 голосов
/ 04 июня 2009

Какова будет производительность индекса для этой таблицы со следующим запросом?

Нет заметных изменений (см. Ниже, почему).

Изменится ли производительность, потому что я добавил два столбца?

Да, но незначительный. На фактический поиск индекса это никак не повлияет, потому что вы вообще не меняете ключ.

Единственное влияние состоит в том, что вы будете возвращать больше данных из одной вашей записи, и что может привести к немного большему количеству операций ввода-вывода, но, поскольку это только для одной записи, это не имеет значения.

Даже если не будет больше операций ввода-вывода для извлечения самой записи, вы будете передавать больше данных клиенту. Технически это медленнее, несмотря ни на что, но не стоит беспокоиться о разнице между вашей предыдущей схемой и измененной.

Будет ли влияние на кластерный индекс?

Нет, вы не изменили ни один из параметров таким образом, чтобы повлиять на первичный ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...