Включать ли Primary Key вторым полем (или в Include) для других индексов26.08.2024, 15:27. Показов 525. Ответов 12
Приветствую!
Давно мучает вопрос, но тестами как-то долго проверять. Прошу совета на опыте. Итак, есть таблица tbl с 20ю полями. Первое из них: ID Int Identity(1, 1) Primary Key Мне нужно отбирать по многим полям этой таблицы, но по одному за раз и, при этом, получать данные других полей. Я собираюсь для каждого из полей отбора сделать индекс с этим одним полем, но не хочу включать все остальные поля в Include. Вместо этого я думаю включить ID вторым полем в каждый индекс или включить его в Include, чтобы потом по нему, как по кластерному индексу получить значения любых полей. Что скажете? Как лучше сделать в этом случае?
0
|
|
| 26.08.2024, 15:27 | |
|
Ответы с готовыми решениями:
12
Отследить исключение Primary Или Unique key Violation of Primary key constraint 'PK_otdel'. Cannot insert dupllicate key in object 'dbo.otdel'.
|
|
668 / 291 / 120
Регистрация: 12.04.2022
Сообщений: 1,000
|
||
| 26.08.2024, 15:40 | ||
1
|
||
| 26.08.2024, 15:58 [ТС] | |
|
PaulWist, слышал о подобном, но не находил подтверждения. Да — ПК у меня всегда кластерные.
Как я понял: 1. Кластерный ПК один на таблицу и хранит её в отсортированном по полям ключа виде. Ключ уникален (это одно или несколько полей). ПК видит все поля таблицы. 2. Любой другой индекс "видит" ПК. Но это же не означает, что любой индекс по ПК может вернуть поля без сканирования… Хочется уйти от сканирования таблицы. То есть, есть поле "вес" и мне нужно отобрать все строки, где "вес" = 20. Поля "марка", "город", например. ПК видит всё. Индекс по весу может быстро отобрать строки с "вес" = 20. Но ведь для отбора других полей всё равно будет сканирование таблицы… Или я что-то неправильно делаю или неправильно понимаю? Если только подзапросом отобрать ID по значению веса и другим запросом уже с помощью ПК по этим ID отобрать всё, что нужно… И то не уверен.
0
|
|
|
668 / 291 / 120
Регистрация: 12.04.2022
Сообщений: 1,000
|
||
| 26.08.2024, 16:13 | ||
|
Предположим, что найдутся 10-100 записей с таким весом, так же будут найдены значения кластерного индекса, поскольку в самом индексе по весу эти значения уже есть. Затем по известным значениям кластерного индекса сервер сделает KeyLookUp (сходит на страницу где лежат остальные поля соответствующие данному значению кластерного индекса), таким образом, произойдёт считывание 10-100 страниц (ну или сколько там занимает запись и какие данные вынимаются, может считать больше-меньше, для простоты будем считать, что каждая запись лежит на отдельной странице). Поэтому сканирования таблицы не будет (повторюсь, сейчас рассматриваем почти идеальный случай)
1
|
||
|
139 / 105 / 36
Регистрация: 27.07.2022
Сообщений: 357
|
||
| 26.08.2024, 16:21 | ||
|
1
|
||
| 26.08.2024, 16:27 [ТС] | |
|
PaulWist, katamoto, кажется, нужно пробовать всё-таки. Но за науку спасибо! Немного успокоили, если можно так сказать
0
|
|
|
139 / 105 / 36
Регистрация: 27.07.2022
Сообщений: 357
|
|
| 26.08.2024, 16:38 | |
|
Jack Famous, Если есть желание погрузиться чуть глубже - на ютубе на канале Brent Ozar-а есть плейлист How to Think Like the SQL Server Engine, рекомендую
1
|
|
| 26.08.2024, 17:21 [ТС] | |
|
katamoto, большое спасибо! Обязательно гляну.
0
|
|
|
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,087
|
||
| 26.08.2024, 18:42 | ||
|
(Ну, разумеется если в системе PLE не на уровне единиц).
1
|
||
| 27.08.2024, 08:42 [ТС] | ||
|
katamoto, большое спасибо! Обязательно гляну.
0
|
||
|
668 / 291 / 120
Регистрация: 12.04.2022
Сообщений: 1,000
|
|
| 27.08.2024, 10:23 | |
|
1
|
|
| 27.08.2024, 11:39 [ТС] | |
|
PaulWist, спасибо
0
|
|
|
668 / 291 / 120
Регистрация: 12.04.2022
Сообщений: 1,000
|
||
| 27.08.2024, 11:56 | ||
0
|
||
| 27.08.2024, 11:56 | |
|
Помогаю со студенческими работами здесь
13
Особености Primary Key для SELECT * FROM SQLite - оптимальный размер транзакции, стоит ли использовать FOREIGN KEY, связь PRIMARY KEY и INDEX Зачем нужны primary key и foreign key? И снова ключи: PRIMARY KEY, FOREIGN KEY Как прописать PRIMARY KEY для Paradox? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|