powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Суррогатный ключ быстрее естественного если выборка без фильтра?
2 сообщений из 2, страница 1 из 1
Суррогатный ключ быстрее естественного если выборка без фильтра?
    #32057383
asker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал в статье:

Код: plaintext
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.
26.
ЕК могут потенциально дать более высокое быстродействие, когда:
Требуется только информация, входящая в первичные ключи связанных таблиц;
нет условий WHERE по полям связанных таблиц.
Т.е., в нашем примере это запрос типа:

 SELECT Family, City FROM People;

В случае СК этот запрос будет выглядеть как

 SELECT P.Family, C.Name
  FROM People P INNER JOIN City C ON P.CityId = C.Id;

Казалось бы, ЕК дает более простой запрос с меньшим количеством таблиц, который выполнится быстрее.
 Hо и тут не всё так просто: размеры таблиц для ЕК - больше (см. выше) и дисковая активность легко съест преимущество, полученное за счёт отсутствия JOIN`а.
Ещё сильнее это скажется, если при выборке данных используется их фильтрование (а при сколько-либо существенном объеме таблиц оно используется обязательно).
Дело в том, что поиск, как правило, осуществляется по информативным полям типа CHAR, DATETIME и т.п.
Поэтому часто бывает быстрее найти в справочной таблице набор значений, ограничивающий возвращаемый запросом результат, а затем путем JOIN`а по быстрому
INTEGER-индексу отобрать подходящие записи из большой таблицы. Например:

(ЕК) SELECT Family, City FROM People WHERE City = 'Иваново';

будет выполняться в разы медленнее, чем

(CК) SELECT P.Family, C.Name
      FROM People P INNER JOIN City C ON P.CityId = C.Id
     WHERE C.Name = 'Иваново';

Это правда?
Просто у меня возникает сомнение, что дисковая активность в случае с СК меньше чем с ЕК. "Иваново" то ему надо считать, то есть по Сity ему идти надо.
В общем, гуру, подтвертиде его слова.
...
Рейтинг: 0 / 0
Суррогатный ключ быстрее естественного если выборка без фильтра?
    #32057417
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дисковая активность больше грубо говоря там, где данных выбирается больше.
Варианет с СК:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
City:
Id  Name
 1    Иваново-подхлебное

People:
Family           CityId
Анохин           1 
Васюткин       1 
Шах               1 
Абрамов         1 
Свиридов        1 
Солодов          1 


Варианет с ЕК:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
People:
Family           City
Анохин          Иваново-подхлебное
Васюткин      Иваново-подхлебное
Шах              Иваново-подхлебное
Абрамов        Иваново-подхлебное
Свиридов       Иваново-подхлебное
Солодов         Иваново-подхлебное


Очевидно, что во втором случае выбираемых данных будет больше, а значит, дисковая активность тоже больше. Хотя, и не всегда такое бывает, а просто чаще.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Суррогатный ключ быстрее естественного если выборка без фильтра?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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