Как сводные индексы работают?

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



    

...

, как здесь найдено WPF DataGrid Обтекание ячейки - установите NoWrap (False)

Вы можете указать ширину, с которой вы хотите начать, а остальные будут скрыты в правой части столбца.

61
задан Joe Phillips 27 April 2009 в 19:53
поделиться

4 ответа

Составные индексы работают так же, как обычные индексы, за исключением того, что они имеют ключи с несколькими значениями.

Если вы определяете индекс для полей (a, b, c), записи сортируются первыми на а, затем б, затем в.

Пример:

| A | B | C |
-------------
| 1 | 2 | 3 |
| 1 | 4 | 2 |
| 1 | 4 | 4 |
| 2 | 3 | 5 |
| 2 | 4 | 4 |
| 2 | 4 | 5 |
71
ответ дан 24 November 2019 в 17:13
поделиться

Составной указатель подобен обычному алфавитному указателю в словаре, но охватывает две или более букв, например:

AA - page 1
AB - page 12

и т. Д.

Строки таблицы располагаются первыми по первому столбцу в индекс, затем второй и т. д.

Его можно использовать при поиске по обоим столбцам ИЛИ по первому столбцу. Если ваш индекс такой:

AA - page 1
AB - page 12
…
AZ - page 245
BA - page 246
…

, вы можете использовать его для поиска по 2 буквам ( = 2 столбцов в таблице) или как обычный индекс по одной букве:

A - page 1
B - page 246
…

Обратите внимание, что в случае словаря сами страницы располагаются в алфавитном порядке. Это пример индекса CLUSTERED .

В простом, не индексе CLUSTERED ссылки на страницы упорядочены, как в учебнике истории:

Gaul, Alesia: pages 12, 56, 78
Gaul, Augustodonum Aeduorum: page 145
…
Gaul, Vellaunodunum: page 24
Egypt, Alexandria: pages 56, 194, 213, 234, 267

Составные индексы также может использоваться, когда вы ЗАКАЗАТЬ два или более столбцов. В этом случае может пригодиться предложение DESC .

См. Эту статью в моем блоге об использовании предложения DESC в составном индексе:

31
ответ дан 24 November 2019 в 17:13
поделиться

Наиболее распространенная реализация индексов использует B-деревья, чтобы позволить несколько быстрых поисков, а также достаточно быстрое сканирование диапазона. Здесь слишком много объяснений, но вот статья в Википедии о B-деревьях . И вы правы, первый столбец, который вы объявляете в индексе создания, будет столбцом старшего разряда в результирующем B-дереве.

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

Если вы ищете все карточки для авторов, чья фамилия «Клеменс», вы просто идете в каталог авторов и очень быстро находите ящик с надписью «CLE-CLI» на передней панели. Это правильный ящик. Теперь вы выполняете неформальный бинарный поиск в этом ящике, чтобы быстро найти все карточки с надписью «Клеменс, Роджер» или «Клеменс, Самуил».

Но предположим, что вы хотите найти все карточки для авторов чье имя зовут "Самуил". Теперь вы в самом разгаре, потому что эти карты не собраны в одном месте в каталоге авторов. Подобное явление происходит с составными индексами в базе данных.

Различные СУБД отличаются тем, насколько умен их оптимизатор при обнаружении сканирования диапазона индексов и точной оценке их стоимости. И не все индексы являются B-деревьями. Вы' Вам нужно будет прочитать документы для вашей конкретной СУБД, чтобы получить реальную информацию.

17
ответ дан 24 November 2019 в 17:13
поделиться

Нет. Результирующий индекс будет одним индексом, но с составным ключом.

KeyX = A, B, C, D; KeyY = 1,2,3,4;

Индекс KeyX, KeyY будет фактически: A1, A2, A3, B1, B3, C3, C4, D2

, так что в случае, если вам нужно что-то найти по KeyX и KeyY - это будет быстро и будет использовать один индекс. Что-то вроде SELECT ... WHERE KeyX = "B" и KeyY = 3.

Но важно понимать: WHERE KeyX =? запросы будут использовать этот индекс, тогда как WHERE KeyY =? НЕ вообще будет использовать такой индекс.

4
ответ дан 24 November 2019 в 17:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: